我想知道这是做什么的:
newM = moment("2015-08-11T13:00:00.000000Z", "YYYY-MM-DDTHH:mm:ss.SSSS[Z]", true)
具体来说 - 格式字符串中的[Z]。
我正在使用一个使用片刻的库(react-bootstrap-datetimepicker)。该库(React组件)采用参数格式'它被用作时刻的第二个参数
我无法看到[Z]正在做什么。但我必须这样做,而不仅仅是' Z'当我使用这个字符串格式化要显示的时刻对象时,得到我想要的结果:newM.format(' YYYY-MM-DD HH:mm:ss.SSSZ')。
编辑:
要明确:我理解' Z'根据文档,将导致传递的日期时间被视为UTC。但是方括号的意义是什么 - 它们不在文档中。
答案 0 :(得分:4)
Z
不会将时间视为UTC。它匹配时区说明符:
Format: Z ZZ
Example: +12:00
Description: Offset from UTC as +-HH:mm, +-HHmm, or Z
在format
的文档中
要转义格式字符串中的字符,可以将字符换行 方括号。
通过在括号中指定Z
,您匹配文字Z
,因此时区默认保留,即本地时区。
除非您指定时区偏移量,否则解析字符串将创建一个 在当前时区的日期。
如果您的时间确实是UTC,那么这可能不是您想要的行为。如果您想将其解析为UTC但是以当地时间显示,请使用Z
,然后在生成的local()
对象上调用moment
,这很可能是您想要的:
// Parse with timezone specifier (which is UTC here) but convert to local time
newM = moment("2015-08-11T13:00:00.000000Z", "YYYY-MM-DDTHH:mm:ss.SSSSZ", true).local();
答案 1 :(得分:0)
对于每个由于末尾缺少allOf()
而关心一致性的人,请尝试将Z
添加到您的格式中。
示例: [Z]
,结果是:.format('YYYY-MM-DDTHH:mm:ss[Z]')
您可以在此github issue中找到更详细的说明。