使用 Day.js 在 JavaScript 中解析、验证、操作和显示日期与时间

随着近一年前的最后一次发布,最近的订购超过6个月前,以及数百个开放的错误和拉动请求,它开始看起来像 Moment.js正在放缓,是时候购买更积极维护的替代品。

开始使用 Day.js

要在 Node.js 项目中开始使用 Day.js,只需添加npmyarn的依赖性:

1$ npm install dayjs --save
2# or
3$ yarn add dayjs

然后只需将其纳入你的脚本:

1const dayjs = require('dayjs');

Day.js 也可以在现代浏览器中运行,也可以通过 CDN 提供商(如 [cdnjs])(https://cdnjs.com/libraries/dayjs)自托或包含。

Parsing 日期和时间

将日期和时间字符串分解为 Day.js 对象很容易,支持字符串、数字、原始 JavaScript Date 对象以及其他 Day.js 对象:

1let date = dayjs('2019-12-27');
2date = dayjs('20191227');
3date = dayjs(new Date(2019, 11, 27));
4date = dayjs(day('2019-12-27'));

您甚至可以将字符串完全省略,以将 Day.js 对象默认为当前日期和时间:

1date = dayjs();

验证日期和时间

一旦你用 Day.js 对日期和时间进行了审查,你可以利用 isValid() 方法来确定你所传递的内容是否实际上是 Day.js 可以审查的内容:

1dayjs('2019-12-27').isValid(); // true
2dayjs('tomorrow').isValid(); // false

此外,如果您要尝试显示一个 Day.js 对象,该对象被加载了无法解析的日期,则返回将是无效日期

显示日期和时间

.format() 方法允许我们将 Day.js 对象转换为可人读的字符串,它支持您共同的日期和时间变量集,如YYYY为全年,以及MMmm为月份和分钟。

对于那些想要包含不希望转换为日期或时间部分的额外文本的时刻,您可以用[和]字段抓住`字符串:

1dayjs().format('YYYY-MM-DD [at] HH:mm:ss');
2dayjs().format('HH:mm:ss [on] YYYY-MM-DD');

操纵日期和时间

在上一节中,我们试图通过字符串明天,它被认为是无效的日期. 为了能够获得明天的日期和时间,我们可以从今天的日期和时间开始,并添加一天:

1dayjs().add(1, 'day').format('YYYY-MM-DD');

除了添加,还可以添加,甚至可以添加小时分钟等时间间隔:

1dayjs().add(1, 'hour').format('YYYY-MM-DD HH:mm:ss');
2dayjs().add(30, 'minute').format('YYYY-MM-DD HH:mm:ss');
3dayjs().add(3, 'month').format('YYYY-MM-DD HH:mm:ss');
4dayjs().add(3, 'year').format('YYYY-MM-DD HH:mm:ss');

您甚至可以链接它来做一些事情,例如添加多个间隔:

1dayjs().add(1, 'hour').add(30, 'minute').format('YYYY-MM-DD HH:mm:ss');

別擔心,還有一種抽取方法:

1dayjs().subtract(4, 'hour').format('YYYY-MM-DD HH:mm:ss');

比较日期和时间

在开发中出现的更复杂的任务之一是比较日期和时间。Day.js使它很容易提供帮助方法,如isBefore()isAfter():

 1const date1 = dayjs('2020-01-1');
 2const date2 = dayjs();
 3
 4if (date1.isBefore(date2)) {
 5  console.log('Date 1 falls before date 2');
 6}
 7else if (date1.isAfter(date2)) {
 8  console.log('Date 2 falls before date 1');
 9}
10else if (date1.isSame(date2)) {
11  console.log('Date 1 and date 2 are the same');
12}

结论

有了熟悉的界面和积极的维护(即使是在假期),Day.js似乎是Moment.js的绝佳替代品。

试试你的下一个项目,我知道我会。

Published At
Categories with 技术
Tagged with
comments powered by Disqus