Статья Легкая обработка даты и времени в 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 и подпишитесь на нашу рассылку!