介绍
Luxon是一个功能强大且轻巧的JavaScript库,用于与日期和时间合作。它是作为流行的Moment.js库的替代品创建的,目的是更快,更小且易于使用。
Luxon的主要好处之一是它对ECMAScript Internationalization API的Internationalization (i18n)特征的强烈支持,该功能允许使用多种语言和语言的格式化和分析日期和时间。
Luxon还具有许多其他有用的功能,包括对time zones,duration manipulation和calculations的支持。
安装
要在项目中使用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。如果您有任何疑问或评论,请随时伸出援手。愉快的编码!