我在 javascript 中创建新的日期对象并发现一些不一致,这取决于我是使用 dateString 参数还是使用年/月/日整数参数。
这是一个例子:
var dt1 = new Date(1979,3,5);
var dt2 = new Date('1979-04-05');
dt1 被赋值为:Thu Apr 05 1979 00:00:00 GMT-0500(中部夏令时)
dt2 被赋值为:Wed Apr 04 1979 19:00:00 GMT-0500(中部夏令时)
有人可以解释这种行为吗?第二个示例 (dt2) 恰好是 Chrome 从 input[type=date] 元素返回选定日期的格式,这就是我试图解决这个问题的原因。
最佳答案
看起来 '1979-04-05'
格式被解释为 UTC 日期(然后该 UTC 日期在显示时被转换为本地时间)。 new Date(1979,3,5);
形式被解释为本地时间。您可以使用 Date.UTC
为 3 参数形式 ( see docs ) 强制使用 UTC 时间。
Date
解析(尤其是时区处理)在浏览器之间通常不统一,最好不要依赖它 - 尽可能使用 UTC,或使用像 Date.js 这样的单独库或 moment.js .
关于javascript - 创建新日期对象时不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470906/