javascript - 创建新日期对象时不一致

标签 javascript date

我在 javascript 中创建新的日期对象并发现一些不一致,这取决于我是使用 dateString 参数还是使用年/月/日整数参数。

这是一个例子:

var dt1 = new Date(1979,3,5);
var dt2 = new Date('1979-04-05');

jsFiddle with example

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/

相关文章:

javascript - 使用 Meteor 和 Handlebars 创建 "components"

javascript - xml 标记的编码错误

r - 如何从数据库中过滤日期数字、不完整日期和 NA 并转换为 r 中的统一日期类

java - 如何将字符串转换为表示小时、分钟和秒的日期对象

java - 如何将以下日期时间值格式化为数据库中的格式?

javascript - 用传单旋转标记

javascript - onclick 中的新功能

javascript - jQuery 下拉菜单不工作

python - 在python中将字符串解析为日期

php - PHPs php date.sunrise_zenith 和 php date.sunset_zenith 到底是什么意思