Сохранить текущую дату и дату 1 год с текущего в java
У меня уже есть настройка, чтобы сохранить текущую дату в переменной на Java. Я пытаюсь выяснить, как сохранить дату 1 года после текущей даты.
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Scanner;
import java.util.Calendar;
Вот что у меня есть для текущей даты:
DateFormat newDate = new SimpleDateFormat("MM/dd/yyyy");
Date date = new Date();
startDate = newDate.format(date);
Итак, если бы это было сегодня, например, оно хранило бы 2/18/2013. Я пытаюсь сохранить дату 2/18/2014. Как я могу это сделать?
Ответы
Ответ 1
Если вы не хотите перетаскивать внешние библиотеки, просто используйте calendar.add(Calendar.YEAR, 1)
Calendar cal = Calendar.getInstance();
Date today = cal.getTime();
cal.add(Calendar.YEAR, 1); // to get previous year add -1
Date nextYear = cal.getTime();
Обратите внимание, что если дата была 29/Feb/2012
и вы добавили 1 год, вы получите 28/Feb/2013
Ответ 2
Используйте Календарь # добавить (int field, int amount) метод. Вы должны использовать Calendar API в порядке для управления операциями даты и времени.
Calendar today = Calendar.getInstance();
Calendar nextYearToday = today;
nextYearToday.add(Calendar.YEAR, 1);
Ответ 3
TL;DR
LocalDate.parse(
"2/18/2013" ,
DateTimeFormatter.ofPattern ( "M/d/uuuu" )
).plusYears( 1 )
Подробнее
принятый ответ правильный, но устаревший по сравнению с Java 8.
java.time
java.time framework, встроенный в Java 8, и затем вытесняет неприятные старые классы java.util.Date/.Calendar. Новые классы вдохновлены очень успешной структурой Joda-Time, предназначенной в качестве ее преемника, похожей на концепцию, но повторно созданной. Определено JSR 310. Расширено в проекте ThreeTen-Extra. См. Tutorial.
LocalDate
Эти новые классы включают LocalDate
, чтобы представлять значение только для даты без времени суток или часового пояса.
Сначала мы должны проанализировать ввод строки. java.time formatter использует коды шаблонов, похожие на старые классы, но не совсем то же самое. Поэтому обязательно внимательно прочитайте новый документ.
Заполненный ноль
Обратите внимание на то, что для вашего ввода String не хватает цифры нуля для некоторых значений. Это означает, что вы должны использовать одиночные коды шаблонов, M
и d
, а не MM
и dd
. Двойные коды означают, что вы ожидаете, что добавочный нуль всегда будет включен для других однозначных значений 02
, а не 2
.
String input = "2/18/2013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "M/d/uuuu" );
LocalDate localDate = LocalDate.parse ( input , formatter );
Добавьте год. Рамка java.time заботится о високосном году.
LocalDate yearLater = localDate.plusYears ( 1 );
Дамп для консоли.
System.out.println ( "localDate: " + localDate + " and yearLater: " + yearLater );
localDate: 2013-02-18 и yearLater: 2014-02-18
Ответ 4
Calendar cal = Calendar.getInstance();
Date today = cal.getTime();
cal.add(Calendar.YEAR, 1); // to get previous year add 1
cal.add(Calendar.DAY_OF_MONTH, -1); // to get previous day add -1
Date expiryDate = cal.getTime();
System.out.println("today is --> "+today);
System.out.println("expiryDate is --> "+expiryDate);
аудиовыхода
сегодня → Пт Дек 01 10:10:52 GMT + 05: 30 2017
expiryDate is → Пт ноя 30 10:10:52 GMT + 05: 30 2018
дата сегодня → Пт Дек 01 10:10:52 GMT + 05: 30 2017
expiryDate is → Пт ноя 30 10:10:52 GMT + 05: 30 2018
![введите описание изображения здесь]()
Ответ 5
В Android проще, чем когда-либо:
oneYearAfterDate = new Date(date.getTime() + DateUtils.YEAR_IN_MILLIS )