Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 新日期(1967年9月22日)创建指向10月21日的对象_Javascript - Fatal编程技术网

Javascript 新日期(1967年9月22日)创建指向10月21日的对象

Javascript 新日期(1967年9月22日)创建指向10月21日的对象,javascript,Javascript,我有以下代码创建指向其他日期的日期对象 var date = new Date(1967, 9, 22) 结果: Sat Oct 21 1967 23:00:00 GMT-0300 (Hora oficial do Brasil) 有人知道为什么会发生这种情况吗?我猜:今年10月21日是一个日光变换日,就像2012年一样,所以时间从00:00直接变为01:00,因此当Javascript引擎在00:00得到1967、9、22时,这是一个“不可能”的日期,所以,获取现有日期的方法似乎是删除时间

我有以下代码创建指向其他日期的日期对象

var date = new Date(1967, 9, 22)
结果:

Sat Oct 21 1967 23:00:00 GMT-0300 (Hora oficial do Brasil)

有人知道为什么会发生这种情况吗?

我猜:今年10月21日是一个日光变换日,就像2012年一样,所以时间从00:00直接变为01:00,因此当Javascript引擎在00:00得到1967、9、22时,这是一个“不可能”的日期,所以,获取现有日期的方法似乎是删除时间偏移(一小时):这样你就得到1967年9月21日23:00,这就是你在屏幕上看到的

它尝试了我自己的(法语)夏令时:我选择了3月31日的最后一次日光变化。2点是3点。所以2h30是一个“不可能”的日期。 当我输入Chrome时:

new Date(2013, 2, 31, 2, 30, 00)
我读到:

Sun Mar 31 2013 01:30:00 GMT+0100 (CET)
2h30变成1h30

编辑:按照Cameron的想法,由于某些时间轮班可能持续1、2、1小时或更长时间,并且可能朝着某个方向,因此在创建日期时,获得一年中同一天的最安全方法是将时间设置为12小时。事实上,这应该是javascript的默认设置

详情:
为了完成这一主题,你必须知道,由于各种政治或能源相关的原因,很少有一整天从日历中删除。因此,如果需要100.000%的可靠性,则必须测试Date对象的日期/月份是否与提供的日期/月份相同(!!)。

尝试创建指向第21天或第23天的日期。它是有效的,我唯一有问题的一天是22。而且,第一个月是0=1月。问题是那天而不是月份。我知道9点到10月,但检查一下日期,它从22变为21。是的,我想这与巴西时区有关。我强烈怀疑这是由于时区的原因,尽管1967年巴西的切换日期是10月31日:在这种情况下,增加一个小时将创建一个日期,该日期具有正确的日/月/年(
新日期)(1967,9,22,1)
。@Vincent Piel是对的。我测试了其他一些开始日光节约的日期,也遇到了同样的问题。