tl; др
Первый момент 1970 года в UTC:
Instant.EPOCH.toString()
1970-01-01T00: 00: 00Z
Атот же момент, что и в регионе Нью-Йорка:
Instant.EPOCH.atZone( ZoneId.of( "America/New_York" ) ).toString()
1969-12-31T19: 00-05: 00 [America / New_York]
Подробности
Другие ответы верны: ссылка на эпоху - это первый момент 1970 года в UTC, а ваш часовой пояс на 5 часов отстает UTC.Вот обновленная информация.
java.time
В современном подходе используются java.time классы, которые вытеснили проблемные старые унаследованные классы даты и времени.
Класс Instant
представляет момент на временной шкале в UTC с разрешением наносекунд (до девяти (9) цифр десятичной дроби).
Ссылка на эпоху 1970-01-01T00: 00: 00Z определяется как постоянная, Instant.EPOCH
.
Instant.EPOCH.toString()
1970-01-01T00: 00: 00Z
Чтобы увидеть тот же момент в другом часовом поясе, примените ZoneId
, чтобы получить ZonedDateTime
.Вы можете думать об этом как: «ZonedDateTime = Instant + ZoneId».
Укажите правильное имя часового пояса в формате continent/region
, например America/Montreal
, Africa/Casablanca
или Pacific/Auckland
.Никогда не используйте 3-4-буквенное сокращение, например EST
или IST
, так как они не истинные часовые пояса, не стандартизированы и даже не уникальны (!).
ZoneId z = ZoneId.of( "America/New_York" ) ;
ZonedDateTime zdt = Instant.EPOCH.atZone( z ) ;
zdt.toString (): 1969-12-31T19: 00-05: 00 [America / New_York]
Результатом является время-днем на пять часов раньше, в последний день предыдущего года.Этот ZonedDateTime
представляет тот же момент, ту же самую одновременную точку на временной шкале, но другое время настенных часов.
Этот же момент в Индии на пять с половиной часов впереди UTC вместо за .
ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = Instant.EPOCH.atZone( z ) ;
System.out.println(zdt );
zdt.toString (): 1970-01-01T05: 30 + 05: 30 [Азия / Калькутта]
О java.time
Среда java.time встроена в Java 8 и более поздние версии.Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Если драйвер JDBC соответствует JDBC 4.2 или более поздней версии, вы можете обменять java.time объектов непосредственно с вашей базой данных.Нет необходимости в строках или java.sql. * Классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .