我今天在 VB6 中编写了一些代码,它可以获取自 1970 年 1 月 1 日以来的毫秒数,这样我就可以将该值发送到 java 应用程序,该应用程序将解析该值,如 new Date(Long .parse(毫秒))
。据我所知,日期(长)正在寻找的毫秒数是自 GMT 纪元以来的毫秒数。我运行的机器位于美国的 CDT 上。当我获取从毫秒解析的日期的 toString 值时,这是我得到的值:
Tue Aug 11 15:40:50 CDT 2015
CDT 是否只是因为本地计算机时区是 CDT?我只是觉得有点奇怪,Date 的构造函数会假设从 GMT 纪元以来的毫秒数派生的日期将隐式位于本地计算机时区,而不是(在本例中)偏移 -5 小时。
最佳答案
Is the CDT just there because the local machines timezone is CDT?
用于显示目的的时区基于默认时区。
日期中的毫秒是相对于纪元的,它没有自己的时区。
它是从格林尼治标准时间 1970 年 1 月 1 日 00:00 开始拍摄的,或者如果您更喜欢 CDT 1969 年 12 月 31 日 17:00 开始拍摄。
would implicitly be in the local machines timezone
本地时区的使用仅用于显示目的。使用另一个时区或序列化 Date
并将其发送到另一个时区的计算机,它将再次使用本地时区。
关于Java Date toString 包含时区...为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951765/