具有香港时区的Chrome 66调试控制台的输出:
有效日期:
compute2
无效日期给出T + 1值!
VkBuffer
最后...和无效的日期错误。
VkDeviceMemory
为什么6月31日会给T + 1?
答案 0 :(得分:2)
JavaScript Date
对象很乐意为您处理单位转换,这就是2018-06-31
示例的全部工作-它正在处理6月30日至7月1日的转换。
对于2018-06-32
示例,它没有这样做,因为32
对于days字段是无效的值(而31不是,而6月只有30天)。规范定义了日期/时间字符串here的各个部分的有效范围,在该范围中我们可以看到它表示该月中某天的有效值是01到31(含)。
遗憾的是,如果您不包括时区指示符,则对ISO-8601派生格式(不是ISO-8601)的解析可能值得一提。 ES5指定了ISO-8601,但没有时区指示符的含义错误(它表示应该表示UTC,但ISO-8601表示它表示本地时间);然后,ES2015试图解决此问题,但遵循ES2016的规则将破坏大量的实际代码;因此直到ES2016才稳定下来,它说:没有时区指示符的仅日期格式(如您的格式)是UTC,没有日期/时间格式的是本地时间。 (如果您做包含时区指示符,那么多年没事了。)