Подтвердить что ты не робот

Сохранить текущую дату и дату 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. Как я могу это сделать?

4b9b3361

Ответ 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 )