JSR 310 :: System.currentTimeMillis() vs Instant.toEpochMilli() :: TimeZone
您能否阐明如何为默认系统时区和给定时区获取正确的纪元时间(以毫秒为单位)。
鉴于
1. 时区: GMT+3
2. 以下代码片段:
import java.time.*;
public class Main {
public static void main(String[] args) {
System.out.println(LocalDateTime
.now()
.atZone(ZoneOffset.UTC)
.toInstant()
.toEpochMilli()
);
System.out.println(LocalDateTime
.now()
.atZone(ZoneOffset.of("+3"))
.toInstant()
.toEpochMilli()
);
System.out.println(System.currentTimeMillis());
}
}
3. 输出:
1444158955508
1444148155508
1444148155508
4. JavaDoc for System.currentTimeMillis() 它告诉返回值将是当前时间和 1970 年 1 月 1 日 UTC 午夜之间的差值(以毫秒为单位)。
那么,为什么
- at 的输出与 相同,尽管提及的文档 ?
LocalDateTime
GMT+3
System.currentTimeMillis()
System.currentTimeMillis()
UTC
- at 的输出与 不同,尽管提及的文档 ?
LocalDateTime
UTC
System.currentTimeMillis()
System.currentTimeMillis()
UTC