Javascript 创建新日期对象时的不一致

Javascript 创建新日期对象时的不一致,javascript,date,Javascript,Date,我正在javascript中创建新的日期对象,并发现一些不一致的情况,这取决于我是否使用dateString参数和year/month/day整数参数 下面是一个例子: var dt1 = new Date(1979,3,5); var dt2 = new Date('1979-04-05'); dt1的赋值为:1979年4月5日星期四00:00:00 GMT-0500中央夏令时 dt2的赋值为:Wed Apr 04 1979 19:00:00 GMT-0500中央夏令时 有人能解释这种行为吗

我正在javascript中创建新的日期对象,并发现一些不一致的情况,这取决于我是否使用dateString参数和year/month/day整数参数

下面是一个例子:

var dt1 = new Date(1979,3,5);
var dt2 = new Date('1979-04-05');
dt1的赋值为:1979年4月5日星期四00:00:00 GMT-0500中央夏令时

dt2的赋值为:Wed Apr 04 1979 19:00:00 GMT-0500中央夏令时

有人能解释这种行为吗?第二个示例dt2恰好是Chrome从输入[type=date]元素返回所选日期的格式,这就是我试图解决这个问题的原因。

看起来表单“1979-04-05”被解释为UTC日期,然后UTC日期在显示时转换为本地时间。表格新日期为1979年3月5日;被解释为当地时间。您可以使用Date.UTC强制三参数表单使用UTC时间

尤其是日期解析和时区处理在不同浏览器中通常是不统一的,最好不要依赖它——尽可能使用UTC,或者使用单独的库,如或

看起来“1979-04-05”表格被解释为UTC日期,然后UTC日期在显示时转换为本地时间。表格新日期为1979年3月5日;被解释为当地时间。您可以使用Date.UTC强制三参数表单使用UTC时间


尤其是日期解析和时区处理在不同浏览器中通常是不统一的,最好不要依赖它——尽可能使用UTC,或者使用单独的库,如或

看起来像是格林尼治标准时间的偏移量。你能解释一下为什么你认为新的日期“451979”会有任何特殊的表现吗?字符串'4,51979'甚至没有被格式化为日期,也没有我能识别的格式。我就是这么想的。这是故意的吗?为什么只在使用dateString参数时才使用偏移量@NPE-抱歉,年/月/日示例错误。我更新了它。看起来像是GMT偏移量。你能解释一下为什么你甚至认为新的日期'451979'会有任何特殊的表现吗?字符串'4,51979'甚至没有被格式化为日期,也没有我能识别的格式。我就是这么想的。这是故意的吗?为什么只在使用dateString参数时才使用偏移量@NPE-抱歉,年/月/日示例错误。我更新了它。