我对java.sql.Time对象如何计算时间感到有点困惑。
我正在尝试每天在特定时间设置计时器。但是,在计算时间时,为了发出警报,我似乎将警报提前一小时。
这开始发生在494天前(当前日期是2013年7月17日)。如果你回到更远的地方(例如1000天前),它也会发生,我猜它每隔几百天就会经过+1小时和+0小时。
我可以从输入时间中减去一小时,但我想了解为什么会这样。
private static long oneDayInMill = timeToMill(24, 0);
private static long reminderTime = timeToMill(13 + 6, 25); //military time; it starts at 18, not 0 for some reason
private static long currentTimeInMill = System.currentTimeMillis() % oneDayInMill;
private static long currentDayInMill = System.currentTimeMillis() - currentTimeInMill;
System.out.println(new Time(currentDayInMill - (oneDayInMill*495)+ reminderTime).toString());
// This displays as 13:25:00 (as I expect)
System.out.println(new Time(currentDayInMill - (oneDayInMill*494)+ reminderTime).toString());
// This displays as 14:25:00 (not as I would expect)
public static long timeToMill(int hr, int min){
//out of bounds
return (hr*60*60*1000 + min*60*1000);
}
我认为我的计算机使用的时区是CST(这是我输出Date java.util.Date对象时的输出)
对不起,如果我的问题有点令人困惑
答案 0 :(得分:0)
Sat Mar 10 18:00:00 CST 2012
如果我在494天前打印出日期对象,我会收到:
Sun Mar 11 19:00:00 CDT 2012