Не могли бы вы пролить свет на то, как получить правильное время эпохи в миллисекундах для системного часового пояса по умолчанию и заданного часового пояса.
Учитывая
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 для System.currentTimeMillis(), который сообщает, что возвращаемое значение будет разницей, измеренной в миллисекундах, между текущим временем и полночью, 1 января, 1970 UTC.
Итак, почему
- вывод
LocalDateTime
atGMT+3
такой же, как и дляSystem.currentTimeMillis()
, хотя в документах дляSystem.currentTimeMillis()
упоминаетсяUTC
? - вывод
LocalDateTime
atUTC
отличается отSystem.currentTimeMillis()
, хотя в документах дляSystem.currentTimeMillis()
упоминаетсяUTC
?