new Date(1967年9月22日)创建指向10月21日的对象

new Date(1967, 9, 22) creates object pointing to October 21

本文关键字:10月 21日 对象 创建 Date 1967年 9月 22日 new      更新时间:2023-09-26

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

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、,这就是你在屏幕上读到的内容。

它尝试了我自己(法国)的夏令时:我选择了3月31日的最后一次夏令时。2点是3点。所以2点30分是一个"不可能"的日期。当我在Chrome中输入时:

new Date(2013, 2, 31, 2, 30, 00)

我读到:

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

2h30变为1h30。

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

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