从给定的日期开始,我需要计算当天午夜.这就是我想出来的.这太丑了,我认为必须有更好的方法.
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)
建议?
肯特
您应该考虑内置日期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)