背景
项目应用的地方存在夏令时,这就要求程序中存储和使用的时间格式为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
 
