JS
时间字符串验证
首先 yup 只认 ISO,moment 则可以实现更多的格式验证
类型名 | 格式 | 说明 |
---|---|---|
ISO 8601 | 一般:2020-12-05T05:33:19Z 东八区:2004-05-03T17:30:08+08:00 | 国际标准化组织的日期和时间的表示方法,这种格式是最常用的格式。 |
RFC2822 | 1992/02/12 12:23:22+0800 | 符合rfc2822格式的时间 |
格林威治标准时间GMT | Fri Jul 20 2018 00:00:00 GMT+0800 (中国标准时间) | 格林威治的子午线作为划分地球东西两半球的经度零度,并作为时间的零点 |
世界协调时间UTC | Mon, 29 Apr 2019 09:52:21 GMT | 经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密 |
Unix时间戳 | 以秒为单位:1607150827 以纳秒为单位:1607150827857990329 | 是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。 |
作者:xingo
链接:https://zhuanlan.zhihu.com/p/331748448
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
ISO
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
ISO(ISO 8601 Extended Format)格式的字符串: YYYY-MM-DDTHH:mm:ss.sssZ。时区总是UTC(协调世界时),加一个后缀“Z”标识。
yup 可以进行简单的验证,且默认异步。
const res = await yupDate().isValid(string);
如果有moment,默认使用moment,尤其是非ISO固定格式的时间字符串,可以使用moment的自定义格式来验证:
moment(field, 'YYYYMMDD').isValid()
Js 原生常用
js 原生可能会受到不同平台的实现产生影响,需要验证:
Date.now() 返回时间戳
Date.now()
1617766661692
new Date() 默认返回 GMT
new Date()
Wed Apr 07 2021 11:39:50 GMT+0800 (中国标准时间)
new Date(dateString) 可接受的参数:
Date.parse(dateString) == new Date(dateSteing)
dateString同时支持 RFC2822 和 ISO
Date 对象内置方法:
(new Date()).toDateString() // 返回仅日期
"Wed Apr 07 2021"
(new Date()).toISOString() // 返回 ISO 格式
"2021-04-07T03:41:21.349Z"
(new Date()).toUTCString() // 返回 UTC 格式
"Wed, 07 Apr 2021 03:42:03 GMT"
(new Date()).getTime() // 返回 时间戳
1617766996218