new Date 兼容性问题

  • A+
所属分类:Web前端
摘要

new Date() 很神奇,用带横线的字符串类型的日期会打印出东八区的日期,用斜线的字符串类型的日期会打印出当天的 0 时 0 分 0 秒;

new Date('2022-03-17') Thu Mar 17 2022 08:00:00 GMT+0800 (中国标准时间) new Date('2022/03/17') Thu Mar 17 2022 00:00:00 GMT+0800 (中国标准时间)

new Date() 很神奇,用带横线的字符串类型的日期会打印出东八区的日期,用斜线的字符串类型的日期会打印出当天的 0 时 0 分 0 秒;

解决方案:使用 momnetjs 这个模块,也是一个 npm 包,可以在 npmjs.com 官网查看如何使用

moment() p {_isAMomentObject: true, _isUTC: false, _pf: {…}, _locale: j, _d: Thu Mar 17 2022 11:27:06 GMT+0800 (中国标准时间), …}_d: Thu Mar 17 2022 11:27:06 GMT+0800 (中国标准时间) {}__proto__: Object_isAMomentObject: true_isUTC: false_isValid: true_locale: j {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", _dayOfMonthOrdinalParse: /d{1,2}(u65e5|u6708|u5468)/, ordinal: ƒ, …}_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -2, charsLeftOver: 0, …}_z: null__proto__: Object typeof moment() "object" new Date() Thu Mar 17 2022 11:27:20 GMT+0800 (中国标准时间) typeof new Date() "object" moment()._d Thu Mar 17 2022 11:28:05 GMT+0800 (中国标准时间) new Date() Thu Mar 17 2022 11:28:11 GMT+0800 (中国标准时间)

momentjs 会把字符串的日期转化为一个 object ,其中 _d 属性是日期格式的,而且可以把带有横线的字符串格式的日期转化为 当天 0 时 0 份 0 秒;

扩展:随着时代的进步,目前出现一款 dayjs 的时间插件,同样在 npmjs 的官网可以查看下载,它是轻量级的,文件大小只有 2kb ,深受人们的喜爱,在 ant Design UI库 3.0版本已经全面接受它了,使用方法与 momentjs 很像。