Добавление классов Years from Date
Скажем, у меня есть это:
PrintStream out = System.out;
Scanner in = new Scanner(System.in);
out.print("Enter a number ... ");
int n = in.nextInt();
У меня есть случайная дата, например, 05/06/2015 (ее не фиксированная дата, ее случайность каждый раз). Если я хочу взять "год" этой даты и добавить все, что "n" в этом году, как это сделать?
все методы класса Date не являются "int".
и добавить годы из int, 'years' должен быть также int,
Ответы
Ответ 1
Вам нужно преобразовать Date
в Calendar
.
Calendar c = Calendar.getInstance();
c.setTime(randomDate);
c.add(Calendar.YEAR, n);
newDate = c.getTime();
Вы можете манипулировать Годом (или другими полями) в качестве Календаря, а затем преобразовывать его в Дату.
Ответ 2
Этот вопрос давно заслуживает современного ответа. И даже более того, после добавления 10 лет к текущей дате в Java 8 был сочтен дубликатом этого вопроса.
Другие ответы были хорошими в 2012 году. Прошли годы, и сегодня я считаю, что никто не должен использовать устаревшие классы Calendar
и Date
, не говоря уже о SimpleDateFormat
. Современный API даты и времени Java намного приятнее работать.
Используя пример из этого дублирующего вопроса, сначала нам нужно
private static final DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
С этим мы можем сделать:
String currentDateString = "2017-09-12 00:00:00";
LocalDateTime dateTime = LocalDateTime.parse(currentDateString, formatter);
dateTime = dateTime.plusYears(10);
String tenYearsAfterString = dateTime.format(formatter);
System.out.println(tenYearsAfterString);
Это печатает:
2027-09-12 00:00:00
Если вам не нужно время суток, я рекомендую класс LocalDate
вместо LocalDateTime
поскольку это точно дата без времени суток.
LocalDate date = dateTime.toLocalDate();
date = date.plusYears(10);
Результатом является дата 2027-09-12
.
Вопрос: где я могу научиться использовать современный API?
Вы можете начать с учебника по Oracle. Theres гораздо больше материала в сети, иди искать.
Ответ 3
Класс Date
не поможет вам, но класс Calendar
может:
Calendar cal = Calendar.getInstance();
Date f;
...
cal.setTime(f);
cal.add(Calendar.YEAR, n); // Where n is int
f = cal.getTime();
Обратите внимание, что вам все равно нужно присвоить значение переменной f
. Я часто использую SimpleDateFormat
для преобразования строк в даты.
Надеюсь, это поможет вам.
Ответ 4
Попробуйте тип java.util.Calendar
.
Calendar cal=Calendar.getInstance();
cal.setTime(yourDate.getTime());
cal.set(Calendar.YEAR,n);
Ответ 5
Если вам нужно добавить один год, любая дата использует объект Calendar.
Calendar dateMoreOneYear = Calendar.getInstance();
dateMoreOneYear.setTime(dateOriginal);
dateMoreOneYear.add(Calendar.DAY_OF_MONTH, 365);
Ответ 6
Попробуйте так же на месяц и год (июнь 2019)
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, n); //here n is no.of year you want to increase
SimpleDateFormat format1 = new SimpleDateFormat("MMM YYYY");
System.out.println(cal.getTime());
String formatted = format1.format(cal.getTime());
System.out.println(formatted);
Ответ 7
Другой пакет для этого существует в org.apache.commons.lang3.time
, DateUtils
.
Date date = new Date();
date = DateUtils.addYears(date, int quantity = 1);
Ответ 8
Попробуйте это....
String s = new SimpleDateFormat("YYYY").format(new Date(random_date_in_long)); //
int i = Integer.parseInt(s)+n;