随着近一年前的最后一次发布,最近的订购超过6个月前,以及数百个开放的错误和拉动请求,它开始看起来像 Moment.js正在放缓,是时候购买更积极维护的替代品。
开始使用 Day.js
要在 Node.js 项目中开始使用 Day.js,只需添加npm
或yarn
的依赖性:
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
为全年,以及MM
和mm
为月份和分钟。
对于那些想要包含不希望转换为日期或时间部分的额外文本的时刻,您可以用[
和]字段
抓住`字符串:
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的绝佳替代品。
试试你的下一个项目,我知道我会。