使用ISO 8601字符串,我正在使用Moment js并且正在执行moment("2014-05-08T00:20:40Z").format("HH:mm:ss")
以简单地获得"00:20:40"
的字符串时间,bu
答案 0 :(得分:4)
您的ISO日期是UTC日期。这就是最后Z
的含义。所以你是UTC以西的7个时区。
您开始的时间是8日午夜后20分钟。如果你在法国巴黎运行你的代码,你会得到正确的答案(忽略“夏令时”调整)。但是,由于您在西部有7个时区,因此下午5:20,您仍然在上一个日历日。
通过一种看待事物的方式,没有什么可以“修复”。基于您所在位置的本地时间版本表示与原始ISO UTC时间相同的时间点。一切都运转正常;日期值的默认表示形式为 local 时间。 JavaScript中的Date原始对象具有API,可以按照这种方式访问UTC中的组件。
如果要获取原始ISO字符串,可以使用.toISOString()
:
moment("2014-05-08T00:20:40Z").toISOString()
或者,您可以在格式字符串中包含时区标记:
moment("2014-05-08T00:20:40Z").format("HH:mm:ss zz")
(请注意,格式字符串中的“z”与ISO时间中的“Z”不同。它只是格式化特殊字符,来自“区域”一词的第一个字母。 ISO字符串,它是单词“zero”的第一个字母,它表示时间与UTC时间相差零。有些人称之为“Zulu Time”,因为它是“Z”。)