我正试着赶上当天的最后一次
例如:
今天的最后一次是10.07.2015 23:59:59:999
因此我写了以下方法:
private static Date getLastDateOfDay() {
final Calendar cal = Calendar.getInstance();
cal.set(Calendar.MILLISECOND, 999);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.HOUR, 23);
return cal.getTime();
}
这应该获取当前日期然后设置:
从小时到23点
分钟到59
秒到59
毫秒到999
所以这应该给我这一天的最后一个毫秒。
但是当我使用这种方法时:
Date date = getLastDateOfDay();
然后日期的值为:11.07.2015 23:59:59:999
我错过了什么吗?我做错了吗? 请帮我解决一下这个。 锡先生。
答案 0 :(得分:3)
你不能使用23岁的小时
public static final int HOUR
获取和设置的字段编号,表示上午或下午的小时。小时用于12小时制(0 - 11)。中午和午夜由0表示,而不是由12表示。例如,在10:04:15.250 PM,HOUR为10。
答案 1 :(得分:1)
设置
cal.set(Calendar.HOUR_OF_DAY, 23);
答案 2 :(得分:0)
您可以尝试为Calendar实例设置显式时区,即:
final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC");
这个答案也有帮助: What is the default timezone for java.util.Calendar.?
答案 3 :(得分:0)
我希望这可能就是你所期待的。
private static Date getLastDateOfDay() {
final Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
return cal.getTime();
}