LocalDateTime
неправильный класс
Никогда не используйте LocalDateTime
для представления момента, определенной точки на временной шкале.Умышленно не имея представления о часовом поясе или о смещении от UTC, этот тип представляет потенциальных моментов в диапазоне около 26-27 часов (диапазон часовых поясов по всему миру).
Текущий момент
Чтобы получить текущий момент в UTC, используйте Instant
.
Instant instant = Instant.now() ;
Чтобы получить текущий момент, как видно на часах настенного времени, используемых людьми в определенном регионе.(часовой пояс), используйте ZonedDateTime
.
Я подозреваю, что ваша проблема в том, что ваш ожидаемый часовой пояс на самом деле не был текущим поясом по умолчанию, когда выполнялся ваш код.В вашем коде вы не указали часовой пояс, поэтому текущий часовой пояс JVM по умолчанию был применен без вывода сообщений.Вы можете проверить текущее значение по умолчанию, позвонив ZoneId.systemDefault().toString()
.
На мой взгляд, неявная зависимость от текущего часового пояса JVM по умолчанию является плохой практикой.Лучше всегда указывать желаемый / ожидаемый часовой пояс явно.Всегда передавайте необязательный аргумент ZoneId
.
ZoneId z = ZoneId.of( "America/Montreal" ) ; // Or get the JVM’s current default time zone: ZoneId.systemDefault()
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
О java.time
Среда java.time встроена в Java 8и позже.Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Вы можете обмениваться java.time объектами непосредственно с вашей базой данных.Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии.Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .