tl; dr
Используйте классы ZoneId
& ZonedDateTime
, найденные в пакете java.time .
ZonedDateTime.now() // Implicitly applies the JVM’s current default time zone.
Лучше указать желаемое/ явно ожидаемый часовой пояс.
ZonedDateTime.now(
ZoneId.of( "Africa/Tunis" )
)
java.time
Современный подход использует классы java.time , которые годы назад вытеснили ужасные классы наследия, такие как Timestamp
, Calendar
, Date
, TimeZone
и SimpleDateFormat
.
Укажите правильное имя часового пояса в формате Continent/Region
, например America/Montreal
, Africa/Casablanca
или Pacific/Auckland
.Никогда не используйте 2-4 буквенные сокращения, такие как EST
или IST
, так как они не истинные часовые пояса, не стандартизированы и даже не уникальны (!).
ZoneId z = ZoneId.of( "America/Montreal" ) ;
Запечатлеть текущий момент, который виден через часы настенного времени, используемые людьми определенного региона, указанного часового пояса.
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
О java.time
Фреймворк java.time встроен в Java8 и позже.Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Проект Joda-Time , теперь в режиме обслуживания , рекомендует переход на java.time классы.
Вы можете обмениваться java.time объектами напрямую с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?