Статья Легкая обработка даты и времени в JavaScript с помощью Luxon была первоначально опубликована в понедельник, 2 января 2023 г., в Блоге технических разработчиков. Для получения новейшего актуального контента, только что из печи, посетите https://techdevblog.io и подпишитесь на нашу рассылку!
Введение
Введение
Luxon — это мощная и легкая библиотека JavaScript для работы с датами и временем. Он был создан как альтернатива популярной библиотеке Moment.js, чтобы быть быстрее, меньше и проще в использовании.
Одним из ключевых преимуществ Luxon является сильная поддержка функции Интернационализация (i18n) API интернационализации ECMAScript, которая позволяет форматировать и анализировать дату и время на различных языках и в разных регионах.
Luxon также имеет ряд других полезных функций, включая поддержку часовых поясов, манипулирование длительностью и расчеты.
Монтаж
Чтобы использовать Luxon в своем проекте, вы можете установить его с помощью npm:
npm install luxon
Кроме того, вы можете загрузить последнюю версию со страницы релизов GitHub и включить ее в свой проект вручную (но на самом деле этого делать не следует).
После того, как вы установили Luxon, вы можете использовать его в своем коде JavaScript, импортировав его:
import { DateTime } from 'luxon';
Даты и время
Одной из основных особенностей Luxon является класс DateTime
, который представляет определенный момент времени. Вы можете создать объект DateTime
, вызвав конструктор DateTime
и передав дату и время в качестве аргументов:
const date = DateTime.fromISO('2022-01-01T00:00:00Z');
console.log(date); // 2022-01-01T00:00:00.000Z
Вы также можете создать объект DateTime
, используя текущую дату и время, вызвав статический метод local()
:
const now = DateTime.local();
console.log(now); // 2022-01-01T00:00:00.000-05:00
Обратите внимание, что метод local()
возвращает объект DateTime
в местном часовом поясе машины, на которой выполняется код. Если вы хотите создать объект DateTime
в определенном часовом поясе, вы можете использовать статический метод fromObject()
и передать объект конфигурации с желаемым часовым поясом:
const date = DateTime.fromObject({
zone: 'America/New_York',
});
console.log(date); // 2022-01-01T00:00:00.000-05:00
Форматирование и парсинг
Форматирование
Получив объект DateTime
, вы можете использовать его метод toFormat()
для преобразования его в строковое представление в определенном формате. Метод принимает строковый аргумент, указывающий формат с использованием комбинации букв и символов. Например, чтобы отформатировать дату как полную дату и время в формате ISO 8601, вы можете использовать следующий код:
const date = DateTime.fromObject({
zone: 'America/New_York',
});
console.log(date.toISO()); // 2022-01-01T00:00:00.000-05:00
Или вы можете указать собственный формат:
const formatted = date.toFormat('yyyy-MM-dd HH:mm:ss');
console.log(formatted); // 2022-01-01 00:00:00
Вы также можете использовать метод toLocaleString()
для форматирования объекта DateTime
в соответствии с соглашениями конкретной локали. Например, чтобы отформатировать дату как полную дату и время в локали английский (США), вы можете использовать следующий код:
const formatted = date.toLocaleString(DateTime.DATE_FULL);
console.log(formatted); // Saturday, January 1, 2022
Разбор
Помимо форматирования даты и времени, Luxon также предоставляет инструменты для их анализа. Вы можете использовать статический метод fromFormat()
для анализа строкового представления даты и времени в объект DateTime
. Например, чтобы проанализировать дату в формате ISO 8601, вы можете использовать следующий код:
const date = DateTime.fromFormat('2022-01-01T00:00:00Z', 'yyyy-MM-ddTHH:mm:ssZ');
console.log(date); // 2022-01-01T00:00:00.000Z
Вы также можете использовать статический метод fromISO()
для анализа строкового представления даты и времени в формате ISO 8601. Этот метод быстрее, чем fromFormat()
, и рекомендуется для парсинга дат в этом формате.
const date = DateTime.fromISO('2022-01-01T00:00:00Z');
console.log(date); // 2022-01-01T00:00:00.000Z
Часовые пояса
Luxon имеет мощную поддержку часовых поясов и позволяет работать с датами и временем в любом часовом поясе. Когда вы создаете объект DateTime
, вы можете указать часовой пояс с помощью параметра zone
. Например, чтобы создать объект DateTime
в часовом поясе стандартного тихоокеанского времени (PST), вы можете использовать следующий код:
const date = DateTime.fromObject({
zone: 'America/Los_Angeles',
});
console.log(date); // 2022-01-01T00:00:00.000-08:00
Вы также можете использовать метод setZone()
для изменения часового пояса существующего объекта DateTime
. Этот метод возвращает новый объект DateTime
с тем же моментом времени, но в указанном часовом поясе:
const date = DateTime.fromObject({
zone: 'America/Los_Angeles',
});
const newDate = date.setZone('America/New_York');
console.log(newDate); // 2022-01-01T03:00:00.000-05:00
Продолжительность
Помимо работы с датами и временем, Luxon также предоставляет инструменты для работы с длительностью. Продолжительность — это период времени, представленный в виде количества дней, часов, минут, секунд и миллисекунд.
Вы можете создать объект продолжительности, используя конструктор Duration
и передав объект с нужными значениями:
const duration = Duration.fromObject({
days: 1,
hours: 2,
minutes: 30,
seconds: 45,
milliseconds: 123,
});
console.log(duration); // 1.11:30:45.123
Вы также можете создать объект длительности, указав общее количество миллисекунд с помощью метода of
:
const duration = Duration.of('milliseconds', 1000);
console.log(duration); // 0.00:00:01
Получив объект длительности, вы можете использовать его метод toFormat()
для преобразования его в строковое представление в определенном формате. Метод принимает строковый аргумент, указывающий формат с использованием комбинации букв и символов. Например, чтобы отформатировать длительность как количество дней, часов, минут и секунд, вы можете использовать следующий код:
const formatted = duration.toFormat('d:hh:mm:ss');
console.log(formatted); // 1:02:30:45
Вы также можете использовать метод toObject()
для преобразования длительности в объект с отдельными значениями дней, часов, минут, секунд и миллисекунд:
const obj = duration.toObject();
console.log(obj); // { days: 1, hours: 2, minutes: 30, seconds: 45, milliseconds: 123 }
Расчеты
Luxon предоставляет ряд методов для выполнения вычислений с датами и временем. Например, вы можете использовать метод plus()
, чтобы добавить продолжительность к объекту DateTime
и получить новый объект DateTime
, представляющий результирующие дату и время:
const date = DateTime.fromISO('2022-01-01T00:00:00Z');
const duration = Duration.fromObject({ days: 1 });
const newDate = date.plus(duration);
console.log(newDate); // 2022-01-02T00:00:00.000Z
Вы также можете использовать метод minus()
, чтобы вычесть продолжительность из объекта DateTime
и получить новый объект DateTime
, представляющий результирующие дату и время:
const date = DateTime.fromISO('2022-01-01T00:00:00Z');
const duration = Duration.fromObject({ days: 1 });
const newDate = date.minus(duration);
console.log(newDate); // 2021-12-31T00:00:00.000Z
В дополнение к сложению и вычитанию продолжительности вы также можете использовать метод diff()
для вычисления разницы между двумя объектами DateTime
и получения объекта длительности, представляющего результат. Например, чтобы вычислить разницу между двумя датами в днях, вы можете использовать следующий код:
const date1 = DateTime.fromISO('2022-01-01T00:00:00Z');
const date2 = DateTime.fromISO('2022-01-03T00:00:00Z');
const duration = date1.diff(date2, 'days');
console.log(duration); // 2
Заключение
В этом руководстве мы рассмотрели основные функции библиотеки JavaScript Luxon для работы с датами и временем. Мы увидели, как создавать и форматировать объекты DateTime
, как работать с часовыми поясами и длительностью и как выполнять вычисления с датами и временем.
Luxon — это мощная и простая в использовании библиотека, которая может значительно упростить вашу работу с датами и временем в JavaScript. Если вам нужно форматировать даты и время для отображения, анализировать даты и время из строк или выполнять вычисления с датами и временем, Luxon поможет вам.
Я надеюсь, что это руководство помогло вам начать работу с Luxon. Если у вас есть какие-либо вопросы или комментарии, не стесняйтесь обращаться к нам. Удачного кодирования!
Статья Легкая обработка даты и времени в JavaScript с помощью Luxon была первоначально опубликована в понедельник, 2 января 2023 г., в Блоге технических разработчиков. Для получения новейшего актуального контента, только что из печи, посетите https://techdevblog.io и подпишитесь на нашу рассылку!