tl; dr
LocalDate
.of( 2018 , Month.MAY , 23 )
.atStartOfDay(
ZoneId.of( "America/New_York" )
)
Подробности
Никогда не используйте ужасные старые унаследованные классы даты и времени, такие как Date
.
Используйте современный Java.time классы.
ZoneId z = ZoneId.of( "America/New_York" ) ;
LocalDate ld = LocalDate.of( 2018 , Month.MAY , 23 ) ;
ZonedDateTime zdtStart = ld.atStartOfDay( z ) ;
При отслеживании всего дня не пытайтесь прибить последний момент.Мы обычно определяем промежуток времени, используя подход Half-Open, где начало включительно, а окончание - эксклюзивно.Таким образом, день начинается с первого момента (обычно в 00:00, но не всегда) и продолжается, но не включает первый момент следующего дня .
LocalDate dayAfter = ld.plusDays( 1 ) ;
ZonedDateTime zdtStop = dayAfter.atStartOfDay( z ) ;
Совет: добавьте библиотеку ThreeTen-Extra в свой проект, чтобы получить доступ к классу Interval
.
org.threeten.extra.Interval interval =
Interval.of(
zdtStart.toInstant() ,
zdtStop.toInstant()
)
;
Этот класс содержит удобные методы сравнения, такие как abuts
, contains
, encloses
, intersection
и т. Д.
boolean containsMoment = interval.contains( Instant.now() ) ;
О программе 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 .