Я должен вычислить 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);
Если вас не волнуют часовые пояса, то ваше решение в порядке. В противном случае стоит взглянуть на JodaTime.
Если вы в конце концов решите перейти на JodaTime, вы можете использовать класс DateMidnight , который предполагается использовать в вашей ситуации.
Следующий код вернет объект календаря текущей даты с 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 в одной строке.
Я нахожусь в одной лодке, и вы рассказали, как я это делаю. У меня это есть в функции DateUtil.stripToMidnight (...)
...
Но просто не забывайте учитывать часовые пояса при выполнении всего этого, поскольку здесь 0:00 утра, в другая часть мира.
В JodaTime есть способ сделать это, но я о нем не знаю.
Другой вариант без дополнительных библиотек:
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());
}
}