Предположим, у меня есть объект даты, обозначенный 13 февраля 2013 года в 11 вечера. Я пытаюсь получить следующий объект в ближайшее время, скажем, 3 часа ночи. Так что в этом случае это будет 14 февраля 2013 года 3 часа ночи.Как найти скорую Java-дату за полночь?
Я мог бы это сделать, просто добавив 1 день в поле даты и установки времени до 3:00 утра, но то, что о следующем случае:
У меня есть объект даты, отмеченные для 14 февраля 2013 года в 1am , Здесь мне не нужно было бы добавлять день, а просто задавать время.
Есть ли элегантный способ сделать это? Ниже приводится то, что я сделал до сих пор, и я думаю, что это сработает, но мне просто интересно, есть ли там api, что делает это проще. Что-то вроде getNextSoonestDate() или что-то
Calendar calendar = Calendar.getInstance();
//myDate is some arbitrary date, like one of the examples posted above (i.e. feb 13th 11pm)
calendar.setTime(myDate);
//set the calender to be 3am
calendar.set(Calendar.HOUR_OF_DAY, 3);
//check if this comes before my current date, if so we know we need to add a day
if (calendar.getTime().before(myDate)){
calendar.add(Calendar.DAY_OF_YEAR, 1);
}
ваш код не будет работать в 02: 00ч – AlexWien
@AlexWien - почему нет? – radai
уверен, что это было бы, 3 часа не было бы до 2 утра, поэтому мы бы оставили день года нетронутым – 75inchpianist