Я пытаюсь понять базовый механик временных утилит.Datest, смещения и часовые пояса в java
Итак, я сделал следующий пример:
public class Test {
public static void main(String[] args) {
System.out.println(Instant.now().getEpochSecond());
System.out.println(new Date().getTime());
System.out.println(LocalDateTime.now().atZone(ZoneId.systemDefault()).toEpochSecond());
System.out.println(LocalDateTime.now().toEpochSecond(ZoneOffset.UTC));
System.out.println(ZoneId.systemDefault().toString());
}
}
Выход есть:
1460651620
1460651620182
1460651620
1460662420
Europe/Helsinki
Мой текущий systemDefault ZoneId Европа/Хельсинки (+3 часа)
Когда мы создаем new Date()
имеет временная метка unix (UTC).
Это мой базовый пункт, чтобы сравнить печатные результаты.
1. В моей третьей System.out
я имею LocalDateTime с установленной временной зоны systemDefault
, но выход на самом деле то же самое. Я ожидал большего значения (+3 часа).
2. В четвертой выходной строке я хотя и запутываю результат. Я ожидал того же значения с new Date().getTime()
Нужна помощь, чтобы понять выход.