Как вычислить Дату 0:00:00 сегодня?

Я должен вычислить java.util. Дата в течение начала сегодня дня (0:00:00 сегодня дня). Делает кто-то знает что-то лучше, чем сброс полей java.util. Календарь:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.AM_PM, Calendar.AM);
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
7
задан Nulldevice 22 June 2010 в 10:57
поделиться

4 ответа

Если вас не волнуют часовые пояса, то ваше решение в порядке. В противном случае стоит взглянуть на JodaTime.

Если вы в конце концов решите перейти на JodaTime, вы можете использовать класс DateMidnight , который предполагается использовать в вашей ситуации.

7
ответ дан 6 December 2019 в 14:00
поделиться

Следующий код вернет объект календаря текущей даты с time as 00:00:00

Calendar current = Calendar.getInstance();
current.set(current.get(Calendar.YEAR),current.get(Calendar.MONTH),current.get(Calendar.DATE),0,0,0);

Он не учитывает значения часового пояса и почти такой же, как ваш код. Единственная разница в том, что все сбрасываются в 0 в одной строке.

4
ответ дан 6 December 2019 в 14:00
поделиться

Я нахожусь в одной лодке, и вы рассказали, как я это делаю. У меня это есть в функции DateUtil.stripToMidnight (...) ...

Но просто не забывайте учитывать часовые пояса при выполнении всего этого, поскольку здесь 0:00 утра, в другая часть мира.

В JodaTime есть способ сделать это, но я о нем не знаю.

1
ответ дан 6 December 2019 в 14:00
поделиться

Другой вариант без дополнительных библиотек:

import java.sql.Date;

public class DateTest {
    public static void main(String[] args) {
        long MS_PER_DAY = 24L * 60 * 60 * 1000;
        long msWithoutTime = (System.currentTimeMillis() / MS_PER_DAY) * MS_PER_DAY;
        Date date = new Date( msWithoutTime );
        System.out.println( date.toGMTString());
    }
}
0
ответ дан 6 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: