Unix时间戳如何计算本地时间

How is local time calculated from Unix timestamp

如果世界各地的 unix 时间戳都相同,我如何才能获得当地时间。

或者是根据不同的时区时间戳不同。即我在美国,UTC 1970 的当前秒数是 5,000,但如果我在亚洲并检查时间戳,它将是 4,000 秒?

世界上每个国家/地区的 UTC 都是相同的,无论您在美国还是在亚洲检查该值都是相同的。

当地时间是使用时区偏移量计算的(通常通过 IANA time zone database 提供)。这是添加到 UTC 时间以确定自 1970 年以来的 "Local Time"。

我认为纪元转换器可以回答你的问题:

http://www.epochconverter.com/

你会看到全世界的 Unix 时间都是一样的,它会根据你的本地化打印日期

旧式 java.util.Date 和现代 java.time.SystemClock 都使用 System#currentTimeMillis() 来获取系统时间,所以我们假设两台机器上的 Unix 时间值相同。

Unix 时间到本地时间的转换可能是一篇学士学位论文:你必须考虑闰年、闰秒、夏令时、政府对国家时区所做的一些更改。您可以在 OpenJDK 的 tzdata sources.

中阅读有关所有内容的更多信息

因此,您需要系统时间和 tzdata 在您的计算机上相同。