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

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

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

вопрос задан 9.01.2009
user48094
3723 репутация

24 ответов


  • 609 рейтинг

    Нечто подобное должно сработать:

    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
    
    ответ дан Dave, с репутацией 6331, 9.01.2009
  • 174 рейтинг

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

    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);
    
    ответ дан Lisa, с репутацией 2956, 8.03.2012
  • 60 рейтинг

    Я предпочитаю использовать DateUtils от Apache. Проверьте это http: // commons. апач. орг / правильный / Обще-Ланг / Javadocs / апите-2. 6 / орг / Apache / Commons / ЯЗ / время / DateUtils. HTML . Это удобно, особенно когда вам нужно использовать его в нескольких местах в вашем проекте, и вы не хотите писать для этого свой метод с одним вкладышем.

    API говорит:

    addDays (Date date, int amount): Добавляет количество дней к дате, возвращающей новый объект.

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

    ответ дан Risav Karna, с репутацией 804, 13.08.2012
  • 58 рейтинг

    Java. время

    На Java 8 и выше, Java. Временной пакет делает это в значительной степени автоматическим. ( Учебник )

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

    import java.time.LocalDate;
    
    public class DateIncrementer {
      static public String addOneDay(String date) {
        return LocalDate.parse(date).plusDays(1).toString();
      }
    }
    
    ответ дан Daniel C. Sobral, с репутацией 250414, 3.01.2014
  • 53 рейтинг
    SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
    Calendar cal = Calendar.getInstance();
    cal.setTime( dateFormat.parse( inputString ) );
    cal.add( Calendar.DATE, 1 );
    
    ответ дан Alex B, с репутацией 18078, 9.01.2009
  • 43 рейтинг

    Создайте объект Calendar и используйте метод add (Календарь. ДАТА, 1);

    ответ дан krosenvold, с репутацией 51204, 9.01.2009
  • 39 рейтинг

    Посмотрите на Joda-Time ( http: // joda-time. SourceForge. net / ).

    DateTimeFormatter parser = ISODateTimeFormat.date();
    
    DateTime date = parser.parseDateTime(dateString);
    
    String nextDay = parser.print(date.plusDays(1));
    
    ответ дан Willi aus Rohr, с репутацией 3744, 9.01.2009
  • 36 рейтинг

    Обратите внимание, что эта строка добавляет 24 часа:

    d1.getTime() + 1 * 24 * 60 * 60 * 1000
    

    но эта строка добавляет один день

    cal.add( Calendar.DATE, 1 );
    

    В дни с переходом на летнее время (25 или 23 часа) вы получите разные результаты!

    ответ дан Florian R., с репутацией 361, 2.12.2010
  • 36 рейтинг

    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);
    
    ответ дан micha, с репутацией 31005, 28.05.2014
  • 22 рейтинг
    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 на другое число для соответствующего приращения.

    ответ дан Akhilesh T., с репутацией 221, 10.12.2013
  • 7 рейтинг

    Просто укажите дату в строке и число следующих дней

     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;
    
    }
    
    ответ дан LMK, с репутацией 1401, 16.06.2014
  • 7 рейтинг

    Apache Commons уже имеет этот DateUtils. addDays (Дата, число, int сумма) http: // commons. апач. орг / правильный / Обще-Ланг / apidocs / орг / Apache / Commons / lang3 / время / DateUtils. HTML # addDays% 28java. Util. Дата,% 20int% 29 , которую вы используете или можете использовать JodaTime, чтобы сделать ее более чистой.

    ответ дан ROCKY, с репутацией 283, 28.03.2013
  • 5 рейтинг

    Используйте API-интерфейс DateFormat для преобразования строки в объект Date, затем используйте API-интерфейс Calendar для добавления одного дня. Дайте мне знать, если вы хотите конкретные примеры кода, и я могу обновить свой ответ.

    ответ дан Ross, с репутацией 6980, 9.01.2009
  • -1 рейтинг
    Date newDate = new Date();
    newDate.setDate(newDate.getDate()+1);
    System.out.println(newDate);
    
    ответ дан Filip Trajcevski, с репутацией 61, 14.08.2012