2015-09-03 3 views
0

Я хочу, чтобы сбросить java.util.Date к началу дня использованиемНабор java.util.Date к началу дня

Date date = new Date(); 
    Calendar cal = new GregorianCalendar(); 
    cal.setTime(date); 
    cal.set(Calendar.HOUR_OF_DAY, 0); 
    cal.set(Calendar.MINUTE, 0); 
    cal.set(Calendar.SECOND, 0); 
    cal.set(Calendar.MILLISECOND, 0); 
    date = cal.getTime(); 

с

Date date = new Date(); 
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
    String s=df.format(date); 
    try { 
     date = df.parse(s); 
    } catch (ParseException ex) { 
    } 

Какой из них лучше ?

ответ

1

Это лучше с точки зрения ясности и удобочитаемости, хотя оба дают одинаковый результат.

Date date = new Date(); 
Calendar cal = new GregorianCalendar(); 
cal.setTime(date); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
date = cal.getTime(); 
0

Первое решение (манипулирование с помощью Calendar) является определенно лучше. Второе решение - довольно уродливое обходное решение, использующее манипуляции с строкой, которое, скорее всего, будет медленнее первого.

0

Вы можете для первого подхода, и вам не нужно устанавливать время в календаре.

// Date date = new Date(); 
Calendar cal = new GregorianCalendar(); 
// cal.setTime(date); 
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 
Date date = cal.getTime(); 
Смежные вопросы