Moment format踩过的坑
背景
项目应用的地方存在夏令时,这就要求程序中存储和使用的时间格式为UTC,所以在调用接口时存在将本地时间转成UTC时间格式以及获取接口数据后将UTC时间转换成本地时间显示的两个动作。
遇到的坑
moment格式化分为local和utc两种,分别对应defaultFormat
和defaultFormatUtc
,需要注意moment转成utc后再使用format,就会使用defaultFormatUtc
对应的格式。
详解
moment(local)
默认时间格式defaultFormat
为YYYY-MM-DDTHH:mm:ssZ
,所以
moment('2020-08-24 08:00:00').format(); //2020-08-24T08:00:00+08:00
moment(local)自定义defaultFormat
通过moment.defaultFormat='YYYY-MM-DD HH:mm:ss'
设置默认格式为'YYYY-MM-DD HH:mm:ss'
,所以
moment('2020-08-24 08:00:00').format(); //2020-08-24 08:00:00
moment(utc)
默认UTC时间格式defaultFormatUtc
为YYYY-MM-DDTHH:mm:ss[Z]
,所以
moment('2020-08-24 08:00:00').utc().format(); //2020-08-24T00:00:00Z
moment(utc)自定义defaultFormatUtc
通过moment.defaultFormatUtc='YYYY-MM-DDTHH:mm:ss.SSS[Z]'
设置默认格式为'YYYY-MM-DDTHH:mm:ss.SSS[Z]'
,所以
moment('2020-08-24 08:00:00').utc().format(); //2020-08-24T00:00:00.000Z