几个世纪以来的 UTC 时间

UTC time over the centuries

我有一个关于在 js 中创建新日期的问题。我的时区偏移量是 +1,所以我会理解通过将它添加到新日期创建的日期是否与我在上一个问题中问的 .setHours() 具有相同的怪癖。

> new Date()
2019-12-05T10:13:45.694Z
> new Date(2019, 6, 5, 12, 30, 0, 0)
2019-07-05T10:30:00.000Z

当我打电话给 new Date() 时,我的实际时间是 11:13:45。我明白了。但为什么当我将小时定义为 12 时,它 returns 10?

> new Date(2019, 6, 5, 12, 30, 0, 0)
2019-07-05T10:30:00.000Z
> new Date(1776, 6, 5, 12, 30, 0, 0)
1776-07-05T11:36:32.000Z

当对很久以前的日期做同样的事情时,为什么今天的时间会有这么大的变化?

现在您的时区的 UTC 偏移量为 +1。由于 DST,您在 6 月的时区偏差为 +2。在 1776 年,情况可能仍然不同。

时区直到 1850 年代左右才开始使用。 1776 年肯定没有时区。另外,UTC 直到 1960 年左右才出现。(这是一个国家越来越多的过程 "joining the club")。皇家格林威治天文台经度 mean time 并将午夜指定为 0 的通用术语是世界时或 UT。要将UT转换为其他地方的本地平均时间,如果该地点在格林威治以东,经度每15度增加1小时,或者如果格林威治以西,经度每15度减去1小时。

提供自动时区转换的数据库是基于城市的。显然,JavaScript 使用的数据库认为您选择作为您所在位置的城市的时间比 UT 提前 53 分 28 秒,或者比 UT 提前 0.883463 小时。 15 度乘以 0.883463 是格林威治以东经度 13.2519 度。检查您选择的城市的经度是否一致。