ISO8601是国际标准化组织的日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》
合并日期和时间表示时,要在时间前面加一大写字母T,如要表示东八区时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T173008+08。
let d = new Date()
// Thu Sep 02 2021 21:38:47 GMT+0800 (中国标准时间)
d = d.toISOString()
// "2021-09-02T13:38:47.911Z"
用toISOString()转换为ISO8601格式,最后的Z代表零时区
一般不用Date()构造函数里的方法来处理时间
moment.js是用来处理时间的库,但是体积太大了,不推荐使用
推荐使用day.js
安装
yarn add dayjs
判断日期是不是今天,用JS提供的api写
beautify(string:string) {
const d = new Date(Date.parse(string))
const y = d.getFullYear()
const m = d.getMonth()
const dd = d.getDate()
const now = new Date()
if (now.getFullYear() === y && now.getMonth() === m && now.getDate() === dd) {
return '今天'
} else {
return string
}
}
使用dayjs的写法
import dayjs from 'dayjs'
beautify(string:string) {
const now = dayjs()
const date = dayjs(string)
if(date.isSame(now, 'day')) {
return '今天'
} else if(date.isSame(now.subtract(1,'day'),'day')){
return '昨天'
}else if(date.isSame(now.subtract(2,'day'),'day')){
return '前天'
}else if(date.isSame(now, 'year')){
return date.format('M月D日')
}else {
return date.format('YYYY年M月D日')
}
}
api的使用参看文档即可
还有一种传统的计算昨天的方法
cont now = new Date()
// ...
if (dayjs(string).isSame(now.valueOf() - 86400*1000, 'day')) {
return '昨天'
}
// ...