日期d = Calendar.getTime()返回错误的时间?

Cra*_*aig 5 java calendar date

        Calendar calendar = Calendar.getInstance();
    calendar.set(calendar.HOUR, 8);
    calendar.set(calendar.MINUTE, 45);
    calendar.set(calendar.SECOND, 00);

    Date d = calendar.getTime();

    System.out.println(d);
Run Code Online (Sandbox Code Playgroud)

输出为:2011年10月5日星期三20:45:00 BST 2011

任何人都可以帮我解释为什么会这样吗?

Joa*_*uer 9

Calendar.HOUR 用于设置12小时制设置的小时.

换句话说,你设置Calendar至20:45.现在是晚上 8:45 .

使用Calendar.HOUR_OF_DAY设置24小时时钟值.


Jon*_*eet 9

当然 - 你的设置Calendar.HOUR代表了半天的1-12"小时".你应该使用的HOUR_OF_DAY是全天的0-23值:

calendar.set(Calendar.HOUR_OF_DAY, 8);
Run Code Online (Sandbox Code Playgroud)

或者,使用Joda Time,这是一个更好的日期/时间API :)

顺便说一句,不要通过引用引用静态成员...当你打电话someOtherThread.sleep(...)和你当前的线程睡觉时会导致痛苦......