计算给定日期的日期

Ken*_*eck 5 java date

从给定的日期开始,我需要计算当天午夜.这就是我想出来的.这太丑了,我认为必须有更好的方法.

private Date day(Date creation) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(creation);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0);
    return calendar.getTime();
}
Run Code Online (Sandbox Code Playgroud)

建议?

肯特

Ste*_*eod 7

您应该考虑内置日期API obselete.而是使用Joda日期和时间API.

这是您的方法的替代品.

private Date day(Date creation) {
    return new DateMidnight(creation).toDate();
}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的测试:

public static void main(String[] args) {
    final Date creation = new Date();
    final Date midnight = new Foobar().day(creation);
    System.out.println("creation = " + creation);
    System.out.println("midnight = " + midnight);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

creation = Sun May 31 10:09:38 CEST 2009    
midnight = Sun May 31 00:00:00 CEST 2009
Run Code Online (Sandbox Code Playgroud)


duf*_*ymo 5

JODA可能有一个更好的解决方案,代价是对库的另一个依赖.我在看它的DateMidnight属性.对不起,我不能权威地回答,但我自己不是JODA用户.