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

时间:2013-09-02 19:24:58

标签: javascript

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

var date = new Date(1967, 9, 22)

结果:

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

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

我的猜测:10月21日是今年的白天变换日,就像2012年一样,因此小时从00:00直接变为01:00,因此当Javascript引擎变为1967年,9,22时00:00,这是一个'不可能'的日期,所以看来用来获取现有日期的方法是删除时移(一小时):这样你得到1967,9,21 23:00,这是你在屏幕上看到了什么。

我尝试了自己的(法国)夏令时:我选择了行军的最后一次日光变换,31。在2点,它是3点00分。所以2小时30分是一个“不可能”的日期。 当我输入Chrome时:

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

Sun Mar 31 2013 01:30:00 GMT+0100 (CET)

2h30变为1h30。

编辑:遵循卡梅伦的想法,因为一些时间可能会持续1,2小时或更长时间,并且可能在一个方向或另一个方向,最安全的方式来获得建立日期的同一天是小时设置为12.实际上,这应该是javascript的默认值。

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