Получить сегодняшнюю дату на Яве в полночь - PullRequest
50 голосов
/ 09 марта 2012

Мне нужно создать два объекта даты. Если текущая дата и время 9 марта 2012 г. 11:30, то

  • дата d1 должна быть 9 марта 2012 г., 12:00
  • объект даты d2 должен содержать саму текущую дату

Дата не будет введена, это системная дата.

Обновление :

Date dt = new Date();
System.out.print(dt.toString());

дает текущую дату и время

Ответы [ 12 ]

1 голос
/ 09 марта 2012
private static Date truncateTime(Calendar cal) {
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return new Date(cal.getTime().getTime());
}
 public static void main(String[] args) throws Exception{
        Date d2 = new Date();
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(d2);
        Date d1 = truncateTime( cal );
        System.out.println(d1.toString());
        System.out.println(d2.toString());
}
0 голосов
/ 30 июля 2015

Определение «полуночи»

Слово «полночь» сложно определить.

Некоторые думают об этом как о моменте до нового дня.Попытка представить это в программном обеспечении, столь же хитром, как последний момент дня, всегда можно подразделить на меньшую долю секунды.

Я предлагаю лучший способ подумать об этом, чтобы получить «первый момент дня».

Это поддерживает широко используемый подход определения промежутка времени как «полуоткрытый», когда начало включительно, а окончание - исключительно.Таким образом, полный день начинается с первого момента дня и продолжается, но не включая, первый момент следующего дня.Хотелось бы целый день (обратите внимание, что дата идет с 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...