一. ISO8601

国际标准ISO 8601,是国际标准化组织的日期和时间的表示方法
我们关注日期和时间的组合表示法
合并表示时,要在时间前面加一大写字母T,如要表示东八区时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00

用法

1. Date对象=>ISO字符串

ISO8601 和 dayjs库 - 图1newDate()可以得到一个当前时间的date对象,是中国标准时间。
我们通常使用toISOString() 把这个Date对象转换成ISO表示方式的字符串。

2. ISO字符串=>Date对象

ISO8601 和 dayjs库 - 图2
比如我们有一段ISO字符串,把这个字符串放入Date.parse()里,会得到一串数字,再把这串数字放到newDate() 里,就可以还原成Date对象。

JS操作时间的库-dayjs

链接

安装

  1. yarn add dayjs
  2. 复制代码

使用

  1. import dayjs from 'dayjs';
  2. 复制代码

dayjs() 就相当于new Date() ,返回一个当前时间的对象。这个对象有很多API,操作这个时间。
也可以传进去一段ISO字符串,转换成dayjs对象

  1. beautify(string: string){
  2. const day=dayjs(string)
  3. const now=dayjs()
  4. if(day.isSame(now,'day')){
  5. return '今天'
  6. }else if(day.isSame(now.subtract(1,'day'),'day')){
  7. return '昨天'
  8. }else if(day.isSame(now.subtract(2,'day'),'day')){
  9. return '前天'
  10. }else if(day.isSame(now,'year')) {
  11. return day.format('M月M日')
  12. }else {
  13. return day.format('YYYY年M月D日')
  14. }
  15. }

这个参数字符串是’2020-5-30’这样的字符串,是通过把Date对象进行.ISOString()转换成ISO标准时间,然后以T分隔出来的日期字符串。
我们想根据不同的情况进行不同的展示。比如,显示今天,昨天,前天。
有时候我们想把一堆日期排序,就需要比较日期的大小。如果现在的每一个日期是ISO字符串的形式,字符串可以使用> <=来比较,但是如果想相减呢?
字符串是不支持相减的。只能把他们变成数字,取值,再相减

  1. dayjs(string).valueOf()

传进dayjs里,变成对象,调用valueOf,就变成值了,这时就可以相减了。

例子

如何将数字日期改为今天,昨天,前天

image.png

用原生方法写
image.png
image.png

使用 dayjs
image.png

设置昨天 怎么写

方法一 86400
今天 减去 86400 就是前一天
image.png
或提出来
image.png
方法二 : subtract
image.png

如何打出 xxxx 年 xx 月 xx日

format
image.png
image.png