Вопрос-ответ

How can I increment a date by one day in Java?

Как я могу увеличить дату на один день в Java?

Я работаю с датой в этом формате: yyyy-mm-dd.

Как я могу увеличить эту дату на один день?

Переведено автоматически
Ответ 1

Что-то вроде этого должно сработать:

String dt = "2008-01-01";  // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE, 1); // number of days to add
dt = sdf.format(c.getTime()); // dt is now the new date
Ответ 2

ОБНОВЛЕНИЕ (май 2021 г.): Это действительно устаревший ответ для старой-престарой Java. Для Java 8 и выше см. https://javalang.ru/a/20906602/314283

Java, похоже, действительно сильно отстает от восьмерки по сравнению с C #. Этот служебный метод показывает, как это можно сделать в Java SE 6, используя метод Calendar.add (предположительно, единственный простой способ).

public class DateUtil
{
public static Date addDays(Date date, int days)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days); //minus number would decrement the days
return cal.getTime();
}
}

Чтобы добавить один день в соответствии с заданным вопросом, назовите его следующим образом:

String sourceDate = "2012-02-29";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(sourceDate);
myDate = DateUtil.addDays(myDate, 1);
Ответ 3

java.time

В Java 8 и более поздних версиях пакет java.time делает это в значительной степени автоматическим. (Учебное пособие)

Предполагая String ввод и вывод:

import java.time.LocalDate;

public class DateIncrementer {
static public String addOneDay(String date) {
return LocalDate.parse(date).plusDays(1).toString();
}
}
Ответ 4

Я предпочитаю использовать DateUtils из Apache. Проверьте это http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html . Это удобно, особенно когда вам приходится использовать его в нескольких местах вашего проекта и вы не хотели бы писать для этого свой однострочный метод.

API говорит:


AddDays (Date дата, int сумма): добавляет количество дней к дате, возвращая новый объект.


Обратите внимание, что он возвращает новый объект Date и не вносит изменений в сам предыдущий.

java date