Определение «полуночи»
Слово «полночь» сложно определить.
Некоторые думают об этом как о моменте до нового дня.Попытка представить это в программном обеспечении, столь же хитром, как последний момент дня, всегда можно подразделить на меньшую долю секунды.
Я предлагаю лучший способ подумать об этом, чтобы получить «первый момент дня».
Это поддерживает широко используемый подход определения промежутка времени как «полуоткрытый», когда начало включительно, а окончание - исключительно.Таким образом, полный день начинается с первого момента дня и продолжается, но не включая, первый момент следующего дня.Хотелось бы целый день (обратите внимание, что дата идет с 3-го по 4-е):
2016-02-03T00: 00: 00.0-08: 00 [America / Los_Angeles] / 2016-02-04T00: 00: 00.0-08: 00 [America / Los_Angeles]
Joda-Time
Если используется библиотека Joda-Time , позвоните withTimeAtStartOfDay
.
Обратите внимание, как мы указываем часовой пояс.Если опущено, текущий часовой пояс JVM по умолчанию применяется неявно.Лучше быть явным.
DateTime todayStart = DateTime.now( DateTimeZone.forID( "America/Montreal" ) ).withTimeAtStartOfDay() ;
Если вы используете Java 8 или новее, лучше использовать встроенный в Java пакет java.time.См. Ответ сестры от Jens Hoffman.