day.js使用
With it’s last release nearly a year ago, the most recent commit over 6 months ago, and hundreds of open bugs and pull requests, it’s starting to seem like Moment.js is slowing down and it’s time to shop for more actively maintained alternatives. Insert Day.js, a minimalist date and time library weighing in at 2kB that provides a mostly Moment.js-compatible API for ease of transition.
大约一年前的最新版本,六个月前的最新提交以及数百个打开的错误和提取请求,似乎开始使Moment.js的速度变慢,是时候购买更积极维护的替代方案了。 插入Day.js,这是一个最小的日期和时间库,其大小为2kB,它提供了与Moment.js几乎兼容的API,以简化转换过程。
To get started with Day.js in your Node.js project, simply add the dependency with either npm
or yarn
:
要在您的Node.js项目中开始使用Day.js,只需使用npm
或yarn
添加依赖项:
$ npm install dayjs --save
# or
$ yarn add dayjs
Then simply include it in your script:
然后只需将其包含在脚本中:
const dayjs = require('dayjs');
Day.js also works in modern browsers and can be self-hosted or included by way of a CDN provider like cdnjs.
Day.js也可以在现代浏览器中使用,并且可以自行托管,也可以通过CDN提供程序(例如cdnjs)包含 。
Parsing a date and time string into a Day.js object is easy and supports strings, numbers, native JavaScript Date
objects as well as other Day.js objects:
将日期和时间字符串解析为Day.js对象很容易,并且支持字符串,数字,本机JavaScript Date
对象以及其他Day.js对象:
let date = dayjs('2019-12-27');
date = dayjs('20191227');
date = dayjs(new Date(2019, 11, 27));
date = dayjs(day('2019-12-27'));
You can even omit the string entirely to default the Day.js object to the current date and time:
您甚至可以完全忽略该字符串,以将Day.js对象默认为当前日期和时间:
date = dayjs();
Once you’ve parsed a date and time with Day.js you can leverage the isValid()
method to determine if what you passed in was actually something Day.js could parse:
使用Day.js解析日期和时间后,就可以利用isValid()
方法来确定传入的内容是否实际上是Day.js可以解析的内容:
dayjs('2019-12-27').isValid(); // true
dayjs('tomorrow').isValid(); // false
Additionally, if you were to attempt to display a Day.js object that was fed with a date that couldn’t be parsed, the return will be Invalid Date
.
此外,如果您试图显示一个Day.js对象,该对象提供了无法解析的日期,则返回值为Invalid Date
。
The .format()
method allows us to take the Day.js object and convert it into a human-readable string. It supports your common set of date and time variables, like YYYY
for a full year, and MM
and mm
for month and minutes respectively.
.format()
方法允许我们获取Day.js对象并将其转换为人类可读的字符串。 它支持您常用的日期和时间变量集,例如,全年为YYYY
,月份和分钟为MM
和mm
。
For those times when you want to include additional text that you don’t want to be converted to a date or time part, you can “hug” the string with brackets [
and ]
:
对于那些当您想要包括不想被转换为日期或时间部分的其他文本时,可以用括号[
和]
来“拥抱”字符串:
dayjs().format('YYYY-MM-DD [at] HH:mm:ss');
dayjs().format('HH:mm:ss [on] YYYY-MM-DD');
In a previous section we attempted to pass in the string tomorrow
and it was considered an invalid date. To be able to get the date and time for tomorrow, we can start with today’s date and time, and add a day to it:
在上一节中,我们尝试tomorrow
传递字符串,这被认为是无效日期。 为了能够获取明天的日期和时间,我们可以从今天的日期和时间开始,并为其添加一天:
dayjs().add(1, 'day').format('YYYY-MM-DD');
In addition to adding a day
, you can also add month
and year
and even time-based intervals like hour
and minute
:
除了添加day
,您还可以添加month
和year
,甚至是基于时间的时间间隔,例如hour
和minute
:
dayjs().add(1, 'hour').format('YYYY-MM-DD HH:mm:ss');
dayjs().add(30, 'minute').format('YYYY-MM-DD HH:mm:ss');
dayjs().add(3, 'month').format('YYYY-MM-DD HH:mm:ss');
dayjs().add(3, 'year').format('YYYY-MM-DD HH:mm:ss');
You can even chain it to do things like add multiple intervals:
您甚至可以将其链接起来以执行诸如添加多个间隔的操作:
dayjs().add(1, 'hour').add(30, 'minute').format('YYYY-MM-DD HH:mm:ss');
Don’t you worry, there’s a subtraction method as well:
不用担心,还有一种减法:
dayjs().subtract(4, 'hour').format('YYYY-MM-DD HH:mm:ss');
One of the more complex tasks that comes up pretty regularly in development is the comparison of dates and times. Day.js makes it easy be providing helper methods such as isBefore()
and isAfter()
:
在开发中经常出现的比较复杂的任务之一是日期和时间的比较。 通过Day.js,可以轻松提供诸如isBefore()
和isAfter()
类的辅助方法:
const date1 = dayjs('2020-01-1');
const date2 = dayjs();
if (date1.isBefore(date2)) {
console.log('Date 1 falls before date 2');
}
else if (date1.isAfter(date2)) {
console.log('Date 2 falls before date 1');
}
else if (date1.isSame(date2)) {
console.log('Date 1 and date 2 are the same');
}
With it’s familiar interfacing and active maintenance (even during the holidays), Day.js seems like a great alternative for Moment.js.
有了熟悉的接口和主动维护(即使在假日期间),Day.js似乎是Moment.js的绝佳替代品。
Give it a try on your next project, I know I will be.
试试看您的下一个项目,我知道我会的。
翻译自: https://www.digitalocean.com/community/tutorials/js-dayjs
day.js使用