Дата d = Calendar.getTime () возвращает неправильное время? - PullRequest
5 голосов
/ 05 октября 2011
        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);

Вывод: Ср 05 Окт 20:45:00 BST 2011

Может кто-нибудь помочь мне с этим?

Ответы [ 2 ]

9 голосов
/ 05 октября 2011

Конечно - вы устанавливаете Calendar.HOUR, что соответствует 1-12 «часам полдня».Вы должны использовать HOUR_OF_DAY, что является значением 0-23 для всего дня:

calendar.set(Calendar.HOUR_OF_DAY, 8);

В качестве альтернативы используйте Joda Time , что намного лучшеAPI даты / времени:)

В качестве отступления, пожалуйста, не обращайтесь к статическим элементам через ссылки ... это вызовет боль, когда вы вызовете someOtherThread.sleep(...) и ваш текущий потокспит ...

9 голосов
/ 05 октября 2011

Calendar.HOUR используется для установки часа, установленного на 12-часовых часах.

Другими словами, вы делаете устанавливаете Calendarдо 20:45.Сейчас 8:45 PM .

Используйте Calendar.HOUR_OF_DAY для установки значения 24-часовых часов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...