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

Я работаю с датой в этом формате: 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 позади восьмого шара по сравнению с 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); 

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

API говорит:

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

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

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(); } } 
 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 ( http://joda-time.sourceforge.net/ ).

 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 на другой для соответствующего приращения.

 long timeadj = 24*60*60*1000; Date newDate = new Date (oldDate.getTime ()+timeadj); 

Это занимает миллисекунды с эпохи из oldDate и добавляет 1 день в миллисекундах, а затем использует конструктор public () для создания даты с использованием нового значения. Этот метод позволяет вам добавить 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 

Поскольку 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)); 

У 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, чтобы сделать его более чистым.

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

  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; } 

Если вы хотите добавить единицу времени, и вы ожидаете, что другие поля также будут увеличиваться, вы можете безопасно использовать метод add. См. Пример ниже:

 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 

В 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 следующим образом.

 String str = addedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); 

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

Это очень просто, пытаясь объяснить простым словом. получить сегодняшнюю дату, как показано ниже

 Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime());// print today's 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 завтрашней датой

благодаря

Вы можете использовать этот пакет из “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); 

Если вы используете 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); } 

В Java 8 простой способ сделать это:

 Date.from(Instant.now().plusSeconds(SECONDS_PER_DAY)) 
 Date newDate = new Date(); newDate.setDate(newDate.getDate()+1); System.out.println(newDate); 
  • Каково значение url-шаблона в web.xml и как настроить сервлет?
  • Как работают относительные пути к файлу в Eclipse?
  • RabbitMQ и связь между каналом и соединением
  • WebDriver открывает новую вкладку
  • Являются примитивными типами данных streamобезопасными в Java
  • Regex, который будет соответствовать декларации Java-метода
  • Печать JPanel с прокручиваемым Jtable На нем
  • Унаследованы статические переменные
  • Как добавить CheckBox в TableView в JavaFX
  • Является ли null объектом?
  • Jersey Exception: SEVERE: читатель тела сообщения для classа Java
  • Interesting Posts

    Mac OSX изменяет связь файлов на файл в командной строке

    Как обновить или показать сразу в datagridview после вставки?

    Удалите повторяющиеся записи, используя сценарий Bash

    Использование прокручиваемых результатов Hibernate для медленного чтения 90 миллионов записей

    Копирование в буфер обмена в Java

    C # Linq Где дата между 2 датами

    Отменить UILocalNotification

    Windows: «Эта операция была отменена из-за ограничений, действующих на этом компьютере. Пожалуйста, обратитесь к системному администратору."

    Средство поиска и замены Mac OS X с поддержкой регулярных выражений

    Удал ли файл .vbox в некоторой версии VirtualBox до 4.1.2?

    Каково фактическое использование Class.forName (“oracle.jdbc.driver.OracleDriver”) при подключении к базе данных?

    Как эффективно рассчитать расстояние между парой координат с помощью data.table: =

    Что случилось с моей установкой Google Chrome

    Является ли C строго типизированным?

    Получить домашний каталог по имени пользователя

    Давайте будем гением компьютера.