Javascript 日期字符串转换浏览器与夏令时的差异

Javascript 日期字符串转换浏览器与夏令时的差异,javascript,date,datetime,dst,Javascript,Date,Datetime,Dst,我有两个问题 1。关于浏览器中JavaScript的夏令时实现 (输出来自Chrome浏览器) 对于日期对象dt2和dt3,请注意所有值都相同。这令人困惑 2。Internet explorer的夏令时开始日期错误。 1975年,夏时制开始于1975年2月23日凌晨2点。 当我在Chrome和IE中为日期1975年2月23日凌晨1点、凌晨2点和1975年4月6日凌晨1点、凌晨2点和凌晨3点创建日期对象时 1975年2月23日凌晨1点 铬:太阳1975年2月23日01:00:00 GMT-0600

我有两个问题

1。关于浏览器中JavaScript的夏令时实现

(输出来自Chrome浏览器)

对于日期对象
dt2
dt3
,请注意所有值都相同。这令人困惑

2。Internet explorer的夏令时开始日期错误。

1975年,夏时制开始于1975年2月23日凌晨2点。 当我在Chrome和IE中为日期1975年2月23日凌晨1点、凌晨2点和1975年4月6日凌晨1点、凌晨2点和凌晨3点创建日期对象时

1975年2月23日凌晨1点

铬:太阳1975年2月23日01:00:00 GMT-0600(中央标准时间)

IE:1975年2月23日星期日01:00:00 GMT-0600(中央标准时间)

1975年2月23日凌晨2点

铬:太阳1975年2月23日03:00:00 GMT-0500(中央夏令时)

IE:1975年2月23日星期日02:00:00 GMT-0600(中央标准时间)

1975年4月6日凌晨1点

铬:太阳1975年4月6日01:00:00 GMT-0500(CDT)//165996000000

IE:1975年4月6日星期日01:00:00 GMT-0600(CST)//165999600000。以毫秒为单位的时间也不同

1975年4月6日凌晨2点 铬:太阳1975年4月6日02:00:00 GMT-0500(CDT)//165999600000

IE:1975年4月6日星期日01:00:00 GMT-0600(CST)//165999600000。以毫秒为单位的时间是相同的

1975年4月6日凌晨3点

铬:太阳1975年4月6日03:00:00 GMT-0500(CDT)

IE:1975年4月6日星期日03:00:00 GMT-0500(CDT)

在1975年的IE中,夏时制逻辑从1975年4月6日下午2点开始,而不是1975年2月23日凌晨2点开始。铬合金工作正常


当涉及夏时制时,如何在所有浏览器中显示正确的日期字符串?

夏时制和时区是最糟糕的!)

JavaScript日期/时间在运行客户端时始终取决于每个浏览器的特性。因此,即使两个浏览器相同的用户也可能会根据笔记本电脑的设置而有所不同

具体回答您文章中的两个问题:

1:看起来您是从中央时区访问JavaScript,该时区观察DST,而UTC不观察。夏令时发生在凌晨2点,因此dt1将是标准时间,因为那天晚上是凌晨1点,而dt2和dt3分别是凌晨2点和凌晨3点。这就是造成差异的原因

他说:因为理查德·尼克松在1974年和1975年臭名昭著地规定全年实行日光节约。显示您正在测试的IE版本,根据当时的执行指令处理DST,而Chrome则根据当前的指导方针以一致的格式应用它

幸运的是,MomentJS和MomentTimezone可以处理所有这些变化:

对于任何与日期/时间相关的内容,这些都是必不可少的JavaScript库

最简单的方法是:

<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>

var now=力矩();
console.log(now.format());
console.log(现在是.isDST());

你可以把它放在你的bodytag里,看看控制台,它会对你有用的。玩得开心

这不是答案。它没有解释OP为什么会有问题,说“使用图书馆”根本不能回答OP的问题。@RobG更新了回答,专门回答OP的两个问题
<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>