为什么java.sql.Time对象提供相隔一年的不同时间?

时间:2013-07-17 19:58:51

标签: java date time

我对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对象时的输出)

对不起,如果我的问题有点令人困惑

1 个答案:

答案 0 :(得分:0)

rgettman和戴夫巴特利特是对的。如果我在495天前打印出日期对象,我会收到

Sat Mar 10 18:00:00 CST 2012

如果我在494天前打印出日期对象,我会收到:

Sun Mar 11 19:00:00 CDT 2012