后重复datetime值我试图在一个数据表,以显示一些DATATIME值,这里是示例代码浏览器显示DST变化
<html>
<head>
<script type="text/javascript">
console.log(new Date(2017,2,26,0,0,0));
console.log(new Date(2017,2,26,1,0,0));
console.log(new Date(2017,2,26,2,0,0));
console.log(new Date(2017,2,26,3,0,0));
</script>
</head>
<body>
</body>
</html>
浏览器显示为上午02点重复值。 这里是日志输出
Sun Mar 26 2017 00:00:00 GMT+0000 (GMT Standard Time)
Sun Mar 26 2017 02:00:00 GMT+0100 (GMT Daylight Time)
Sun Mar 26 2017 02:00:00 GMT+0100 (GMT Daylight Time) **(Should it not be 3am)**
Sun Mar 26 2017 03:00:00 GMT+0100 (GMT Daylight Time) **(Should it not be 4am)**
我知道我可以使用Date.UTC()
console.log(new Date(Date.UTC(2017,2,26,0,0,0)));
console.log(new Date(Date.UTC(2017,2,26,1,0,0)));
console.log(new Date(Date.UTC(2017,2,26,2,0,0)));
console.log(new Date(Date.UTC(2017,2,26,3,0,0)));
但是,这将显示其他时区错误日期时间值。 有人可以建议解决这个问题?或者有人可以解释这里发生了什么......?
这很可能是因为“2017年3月26日上午1点”不存在。通过向前移动时钟,可以跳过整个小时。所以当你从JavaScript引擎请求这段时间时,它会通过向前移动一小时来“纠正”它,因为那是发生在那个小时的事情。这就是为什么,而不是操纵日期部分,你应该使用时间戳。按时间间隔增加时间戳,查看最终的日期/时间。 –
我会使用unix时间戳(UTC),进行所有计算,然后将其放入适当的时区。正如@NiettheDarkAbsol指出的那样,你看到的输出是可以预料的。 –
我没有看到一个会徽。在格林尼治标准时间+ 1日期实际上由于夏令时和@NiettheDarkAbsol是绝对正确的。 。你想要表达什么?坚持简单的规则:在timestamp/utc中创建和操作datetime,然后显示在任何正确的区域。 – Peter