JavaRush /Java блог /Архив info.javarush /Почему метод clear() класса Calendar не сбрасывает часы?
Core
35 уровень
Екатеринбург

Почему метод clear() класса Calendar не сбрасывает часы?

Статья из группы Архив info.javarush
Здравствуй, добрый человек! Собственно вопрос в заголовке. Date date1 = new Date(); Calendar calendar = new GregorianCalendar(); calendar.setTime(date1); calendar.clear(Calendar.SECOND); calendar.clear(Calendar.MINUTE); calendar.clear(Calendar.HOUR); System.out.println(date1); System.out.println(calendar.getTime()); На выходе Wed Feb 15 23:02:45 YEKT 2017 Wed Feb 15 23:00:00 YEKT 2017 Почему часы не обнуляются. Пробовал вместо поля HOUR использовать HOUR OF DAY. Не помогает. Что не так?
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
dotfinal Уровень 30
16 февраля 2017
А это метод и не должен обнулять. Метод предназначен для сбрасывания значений, «очищения», но это не гарантирует того, что поля обнулятся. Они просто помечаются незаданными. Когда ты файл с жесткого диска удаляешь, то ячейки, в которых он содержался, тоже не обнуляются, они просто помечаются незанятыми. То есть после clear метод isSet вернет false.
В случае с минутами и секундами поля правда обнуляются. Часы обнуляться не будут.
Для обнуления следует использовать, например:
set(Calendar.HOUR_OF_DAY, 0);