毫不费力地在JavaScript中与Luxon一起处理日期和时间
#javascript #softwareengineering #library #datestime

介绍

Effortlessly handle dates and times in JavaScript with Luxon

Luxon是一个功能强大且轻巧的JavaScript库,用于与日期和时间合作。它是作为流行的Moment.js库的替代品创建的,目的是更快,更小且易于使用。

Luxon的主要好处之一是它对ECMAScript Internationalization APIInternationalization (i18n)特征的强烈支持,该功能允许使用多种语言和语言的格式化和分析日期和时间。

Luxon还具有许多其他有用的功能,包括对time zonesduration manipulationcalculations的支持。

安装

要在项目中使用Luxon,您可以使用NPM安装它:

npm install luxon

另外,您可以从GitHub releases page下载最新版本,并手动将其包含在项目中(但您确实不应该)

安装了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

您还可以通过调用local() static方法来创建当前日期和时间:

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选项指定时区。例如,要在太平洋标准时间(PST)时区创建DateTime对象,您可以使用以下代码:

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

结论

在本教程中,我们涵盖了Luxon JavaScript库的主要功能,用于与日期和时间合作。我们已经看到了如何创建和格式化DateTime对象,如何与时区和持续时间一起工作,以及如何使用日期和时间进行计算。

Luxon是一个功能强大且易于使用的库,可以在JavaScript中使用日期和时间来大大简化您的工作。无论您是需要格式化日期和时间以进行显示,分析日期和时间,还是用日期和时间进行计算,Luxon都可以覆盖您。

我希望本教程有助于您开始使用Luxon。如果您有任何疑问或评论,请随时伸出援手。愉快的编码!