[Z]的含义格式为+ Moment.js中的字符串

时间:2016-05-05 18:38:55

标签: momentjs

我想知道这是做什么的:

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。但是方括号的意义是什么 - 它们不在文档中。

2 个答案:

答案 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中找到更详细的说明。