Я работаю с датой в этом формате: yyyy-mm-dd.
Как я могу увеличить эту дату на один день?
 Я работаю с датой в этом формате: yyyy-mm-dd.
Как я могу увеличить эту дату на один день?
Что-то вроде этого должно сделать трюк:
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
Кажется, что Java позади восьмого шара по сравнению с С#. Этот метод утилиты показывает способ сделать в 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);
В Java 8 и более поздних версиях пакет java.time делает это в значительной степени автоматическим. (Tutorial)
Предполагая ввод и вывод String:
import java.time.LocalDate;
public class DateIncrementer {
  static public String addOneDay(String date) {
    return LocalDate.parse(date).plusDays(1).toString();
  }
}
Я предпочитаю использовать DateUtils из Apache. Проверьте http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html. Это особенно удобно, когда вам нужно использовать несколько мест в своем проекте и не хотите писать для этого один метод liner.
API говорит:
addDays (Дата, количество int): добавляет несколько дней к дате, возвращающей новый объект.
Обратите внимание, что он возвращает новый объект Date и не вносит изменений в предыдущий.
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );
Создайте объект Calendar и используйте метод add (Calendar.DATE, 1);
Посмотрите на Joda-Time (https://www.joda.org/joda-time/).
DateTimeFormatter parser = ISODateTimeFormat.date();
DateTime date = parser.parseDateTime(dateString);
String nextDay = parser.print(date.plusDays(1));
Обратите внимание, что эта строка добавляет 24 часа:
d1.getTime() + 1 * 24 * 60 * 60 * 1000
но эта строка добавляет один день
cal.add( Calendar.DATE, 1 );
В дни с изменением летнего времени (25 или 23 часа) вы получите разные результаты!
Java 8 добавила новый API для работы с датами и временем.
В Java 8 вы можете использовать следующие строки кода:
// parse date from yyyy-mm-dd pattern
LocalDate januaryFirst = LocalDate.parse("2014-01-01");
// add one day
LocalDate januarySecond = januaryFirst.plusDays(1);
вы можете использовать Simple java.util lib
Calendar cal = Calendar.getInstance(); 
cal.setTime(yourDate); 
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();
Date today = new Date();               
SimpleDateFormat formattedDate = new SimpleDateFormat("yyyyMMdd");            
Calendar c = Calendar.getInstance();        
c.add(Calendar.DATE, 1);  // number of days to add      
String tomorrow = (String)(formattedDate.format(c.getTime()));
System.out.println("Tomorrows date is " + tomorrow);
Это даст дату завтра. Параметры c.add(...) могут быть изменены с 1 на другой для соответствующего приращения.
Если вы используете Java 8, сделайте это так.
LocalDate sourceDate = LocalDate.of(2017, Month.MAY, 27);  // Source Date
LocalDate destDate = sourceDate.plusDays(1); // Adding a day to source date.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // Setting date format
String destDate = destDate.format(formatter));  // End date
Если вы хотите использовать SimpleDateFormat, сделайте это так.
String sourceDate = "2017-05-27";  // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(sourceDate)); // parsed date and setting to calendar
calendar.add(Calendar.DATE, 1);  // number of days to add
String destDate = sdf.format(calendar.getTime());  // End date
попробуйте этот код:
Date d1 = new Date();
Date d2 = new Date();
d2.setTime(d1.getTime() + 1 * 24 * 60 * 60 * 1000);
long timeadj = 24*60*60*1000;
Date newDate = new Date (oldDate.getTime ()+timeadj);
Это занимает миллисекунды с эпохи из oldDate и добавляет 1 день в миллисекундах, а затем использует конструктор public() (Date) для создания даты с использованием нового значения. Этот метод позволяет вам добавить 1 день или любое количество часов/минут не только целые дни.
Так как Java 1.5 TimeUnit.DAYS.toMillis(1) выглядит более чистым для меня.
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Date day = dateFormat.parse(string);
// add the day
Date dayAfter = new Date(day.getTime() + TimeUnit.DAYS.toMillis(1));
В java 8 вы можете использовать java.time.LocalDate
LocalDate parsedDate = LocalDate.parse("2015-10-30"); //Parse date from String
LocalDate addedDate = parsedDate.plusDays(1);   //Add one to the day field
Вы можете преобразовать в объект java.util.Date следующим образом.
Date date = Date.from(addedDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Вы можете сформировать LocalDate в строку следующим образом.
String str = addedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
Это очень просто, пытаясь объяснить простым словом. получить сегодняшнюю дату, как показано ниже
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());// print today date
calendar.add(Calendar.DATE, 1);
Теперь установите один день вперед с этой датой с помощью метода calendar.add, который принимает (постоянный, значение). Здесь константа может быть DATE, hours, min, sec и т.д., А значение - значение константы. Как и в течение одного дня, опережающая константа - Calendar.DATE, и ее значение равно 1, потому что мы хотим получить однодневное значение.
 System.out.println(calendar.getTime());//print modified date which is завтра
благодаря
В Java 8 простой способ сделать это:
Date.from(Instant.now().plusSeconds(SECONDS_PER_DAY))
У Apache Commons уже есть это DateUtils.addDays(Дата, количество int) http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addDays%28java.util.Date,%20int%29, которое вы используете, или вы можете пойти с JodaTime, чтобы сделать его более чистым.
Просто введите дату в строке и количестве следующих дней
 private String getNextDate(String givenDate,int noOfDays) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        String nextDaysDate = null;
    try {
        cal.setTime(dateFormat.parse(givenDate));
        cal.add(Calendar.DATE, noOfDays);
       nextDaysDate = dateFormat.format(cal.getTime());
    } catch (ParseException ex) {
        Logger.getLogger(GR_TravelRepublic.class.getName()).log(Level.SEVERE, null, ex);
    }finally{
    dateFormat = null;
    cal = null;
    }
    return nextDaysDate;
}
Если вы хотите добавить единицу времени, и вы ожидаете, что другие поля также будут увеличены, вы можете безопасно использовать метод добавления. См. Пример ниже:
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(1970,Calendar.DECEMBER,31);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, 1);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, -1);
System.out.println(simpleDateFormat1.format(cal.getTime()));
Будет печать:
1970-12-31
1971-01-01
1970-12-31
 Используйте API  DateFormat для преобразования String в объект Date, а затем используйте  Calendar API, чтобы добавить один день. Сообщите мне, хотите ли вы конкретные примеры кода, и я могу обновить свой ответ.
Если вы используете Java SE 8 или выше, вы должны использовать новый Date/Time API
 int days = 7;       
 LocalDate dateRedeemed = LocalDate.now();
 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/YYYY");
 String newDate = dateRedeemed.plusDays(days).format(formatter);   
 System.out.println(newDate);
Если вам необходимо конвертировать из java.util.Date в java.time.LocalDate, вы можете использовать этот метод.
  public LocalDate asLocalDate(Date date) {
      Instant instant = date.toInstant();
      ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
      return zdt.toLocalDate();
  }
Если вы используете версию, предшествующую Java SE 8, я советую вам использовать Joda-Time
Joda-Time обеспечивает качественную замену даты и времени Java классы и является де-факто стандартной библиотекой даты и времени для Java до Java SE 8
   int days = 7;       
   DateTime dateRedeemed = DateTime.now();
   DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/uuuu");
   String newDate = dateRedeemed.plusDays(days).toString(formatter);   
   System.out.println(newDate);
Если вы используете Java 8, java.time.LocalDate и java.time.format.DateTimeFormatter могут сделать эту работу очень простой.
public String nextDate(String date){
      LocalDate parsedDate = LocalDate.parse(date);
      LocalDate addedDate = parsedDate.plusDays(1);
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-mm-dd");
      return addedDate.format(formatter); 
}
Вы можете использовать этот пакет из "org.apache.commons.lang3.time":
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 Date myNewDate = DateUtils.addDays(myDate, 4);
 Date yesterday = DateUtils.addDays(myDate, -1);
 String formatedDate = sdf.format(myNewDate);  
startCalendar.add(Calendar.DATE, 1); //Add 1 Day to the current Calender
Позвольте пояснить пример использования: вы хотите сделать календарную арифметику и начать/закончить с java.util.Date.
Некоторые подходы:
Рассмотрите возможность использования java.time.Instant:
Date _now = new Date();
Instant _instant = _now.toInstant().minus(5, ChronoUnit.DAYS);
Date _newDate = Date.from(_instant);
 Это на самом деле просто. Один день содержит 86400000 миллисекунд. Итак, сначала вы получите текущее время в миллисекундах из The System с помощью System.currentTimeMillis() затем добавите 84000000 миллисекунд и с помощью класса Date сгенерируете формат даты для миллисекунд.
пример
 String Today = new Date(System.currentTimeMillis()).toString();
Строка Сегодня будет 2019-05-9
 String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
Струна завтра будет 2019-05-10
 String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
Строка DayAfterTommorow будет 2019-05-11
Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);