将java.util.Date设置为当天的开头

时间:2015-09-03 09:33:11

标签: java

我想将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) {
    }

哪一个更好?

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

第一个解决方案(通过Calendar进行操作)绝对更好。第二个解决方案只是一个使用字符串操作的相当丑陋的解决方法,它很可能比第一个解决方案慢。

答案 2 :(得分: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();

答案 3 :(得分:0)

借助Apache Commons org.apache.commons.lang3.time.DateUtils,您还可以像这样获得所需的结果:

DateUtils.truncate(new java.util.Date(), java.util.Calendar.DATE));