Intereting Posts
В чем разница между строками, выделенными с помощью нового оператора и без нового оператора в java J2ME? Java – передача ArrayList типа интерфейса MediaStore.EXTRA_OUTPUT отображает данные в нуле, другой способ сохранить фотографии? Как заставить TestNG создать новый экземпляр тестового classа для каждого метода, если режим запуска параллелен = “методы” ContainerException при попытке создания веб-сервиса Читать строку со сканером Сглаживание вложенных атрибутов в Jackson Java: кастинг для параметра типа Как реализовать интерфейсы с гомографическими методами в Java? Java-CMS с сервисом RESTful / API для доступа к контенту Почему новый BigDecimal (“0.0”). StripTrailingZeros () имеет масштаб 1? iText 5.0.0, где были RTF и HTML? JavaFX. Как сделать строку суммирования (итоговую строку) в нижней части таблицы? вызов статического метода в java Android Spinner – Как сделать раскрывающийся список прозрачным?

Увеличение существующей даты на 1 день

Возможный дубликат:
Как я могу увеличить дату на один день в Java?

У меня есть существующий объект даты, который я хотел бы увеличить на один день, оставив все остальные поля одинаковыми. Каждый пример, который я встречал, накладывает часы / минуты / секунды или вам нужно создать новый объект даты и передать поля. Есть ли способ, которым вы можете просто продвинуть поле дня на 1?

благодаря

EDIT: Извините, я не хотел увеличивать значение дня на один, я имел в виду продвижение вперед вперед на 1

 Calendar c = Calendar.getInstance(); c.setTime(yourdate); c.add(Calendar.DATE, 1); Date newDate = c.getTime(); 

Сам объект Date (при условии, что вы имеете в виду java.util.Date ) не имеет поля «День» , но только «миллисекунды с момента Unix Epoch». (Метод toString() печатает это в зависимости от текущей локали.)

В зависимости от того, что вы хотите сделать, в принципе есть два способа:

  • Если вы хотите просто «ровно через 24 часа после указанной даты», вы можете просто добавить 1000 * 60 * 60 * 24 миллисекунды к значению времени, а затем установить это. Если есть переход на летнее время между ними, это может быть так, что ваша старая дата была в 11:07, а новая – 10:07 или 12:07 (в зависимости от направления смены), но все равно ровно 24 часов разница.

     private final static long MILLISECONDS_PER_DAY = 1000L * 60 * 60 * 24; /** * shift the given Date by exactly 24 hours. */ public static void shiftDate(Date d) { long time = d.getTime(); time += MILLISECONDS_PER_DAY; d.setTime(time); } 
  • Если вы хотите иметь «одно и то же время в следующий календарный день», вам лучше использовать Календарь, как показало MeBigFatGuy. (Возможно, вы хотите дать этому методу getInstance() значение TimeZone, если вы не хотите, чтобы ваш местный часовой пояс использовался.)

     /** * Shifts the given Date to the same time at the next day. * This uses the current time zone. */ public static void shiftDate(Date d) { Calendar c = Calendar.getInstance(); c.setTime(d); c.add(Calendar.DATE, 1); d.setTime(c.getTimeInMillis()); } 

    Если вы выполняете несколько таких манипуляций с датами, лучше используйте непосредственно объект Calendar вместо преобразования из и в дату снова и снова.

 org.apache.commons.lang.time.DateUtils.addDays(date, 1);