我有两个问题。
1.关于浏览器JavaScript中的夏时制实现,。
(输出来自Chrome浏览器)
var dt1 = new Date(1975, 1 , 23, 1, 0, 0);
dt1.toString(); // Sun Feb 23 1975 01:00:00 GMT-0600 (Central Standard Time)
dt1.toUTCString(); // Sun, 23 Feb 1975 07:00:00 GMT
dt1.getTime(); // 162370800000
var dt2 = new Date(1975, 1 , 23, 2, 0, 0);
dt2.toString(); // Sun Feb 23 1975 03:00:00 GMT-0500 (Central Daylight Time)
dt2.toUTCString(); // Sun, 23 Feb 1975 08:00:00 GMT
dt2.getTime(); //162374400000
var dt3 = new Date(1975, 1 , 23, 3, 0, 0);
dt3.toString(); // Sun Feb 23 1975 03:00:00 GMT-0500 (Central Daylight Time)
dt3.toUTCString(); // Sun, 23 Feb 1975 08:00:00 GMT
dt3.getTime(); // 162374400000对于日期对象dt2和dt3,请观察所有值都是相同的。这太让人困惑了。
2. Internet有错误的夏时制开始日期。
1975年,夏令时间开始于1975年2月23日凌晨2点。当我在Chrome和IE中创建日期为1975年2月23日上午1点,凌晨2点和4月6日1975年1月1日,凌晨2点,凌晨3点。
1975年2月23日凌晨1点
铬:1975年2月23日01:00格林尼治时间-0600(中央标准时间)
1975年2月23日01:00格林尼治时间-0600(中央标准时间)
1975年2月23日凌晨2点
铬:1975年2月23日03:00格林尼治时间-0500(中央夏令时间)
IE :1975年2月23日太阳:格林尼治时间02:00(中央标准时间)
1975年4月6日上午1时
铬:1975年4月6日01:00格林尼治标准时间-0500 (CDT) //165996000000
IE :1975年4月6日,01:00:00格林尼治时间-0600 (CST) //165999600000。以毫秒为单位的时间也不同。
1975年4月6日2 2AM Chrome:太阳报1975年4月6日02:00格林尼治时间-0500 (CDT) // 165999600000
IE :1975年4月6日,01:00:00格林尼治时间-0600 (CST) // 165999600000。时间以毫秒为单位是相同的。
1975年4月6日凌晨3点
铬:日06 1975 03:00格林尼治标准时间-0500 (CDT)
IE :1975年4月6日03:00格林尼治标准时间-0500 (CDT)
在1975年的IE中,夏令时逻辑在1975年4月6日下午2点之后开始,而不是在1975年2月23日凌晨2点以后开始。Chrome正在正常工作。
当涉及夏令时,如何在所有浏览器中显示正确的日期字符串?
发布于 2018-10-31 20:50:57
日光节约和时区是最差的!:)
在运行客户端时,JavaScript日期/时间始终受制于每个浏览器的特性。因此,即使有两个相同浏览器的用户,也可能会根据他们的笔记本电脑设置得到不同的结果。
具体地回答你的帖子中的两个问题:
1:看来你是从中央时区访问JavaScript的,中央时区遵守DST,而UTC没有。夏时制时间发生在凌晨2点,所以那天晚上的标准时间是凌晨1点,在那里,dt2和dt3分别在凌晨2点和3点在dst。这就是差异的原因。
他说:因为理查德·尼克松( Richard )在1974年和1975年以全年夏令而臭名昭著。显示您正在测试的IE版本基于当时的执行任务处理DST,而Chrome则根据当前的指导原则以一致的格式应用它。
幸运的是,有MomentJS和MomentTimezone处理所有这些变体:Is moment.js browser independent?
这些是任何与日期/时间相关的必需的JavaScript库。
https://momentjs.com/timezone/
最简单的方法是:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"> </script>
<script>
var now = moment();
console.log(now.format());
console.log(now.isDST());
</script>你可以把它放在你的身体标签里,然后在控制台里看一看,它会为你工作的。玩得开心!
https://stackoverflow.com/questions/53091650
复制相似问题