从Date类添加年份

时间:2012-07-25 04:25:07

标签: java

我想说:

 PrintStream out = System.out;
 Scanner in = new Scanner(System.in);
 out.print("Enter a number ... ");
 int n = in.nextInt();

我有一个随机日期,例如05/06/2015(它不是固定日期,每次都是随机的)。如果我想参加这个日期的“年份”,并在今年添加“n”,我该怎么做?

Date Class中的所有方法都不是'int'。

并且要从int添加年份,'years'也必须是int

8 个答案:

答案 0 :(得分:46)

您需要将Date转换为Calendar

Calendar c = Calendar.getInstance();
c.setTime(randomDate);
c.add(Calendar.YEAR, n);
newDate = c.getTime();

您可以将年份(或其他字段)作为日历进行操作,然后将其转换回日期。

答案 1 :(得分:6)

这个问题长期以来应该得到一个现代的答案。在Add 10 years to current date in Java 8被视为与此问题重复之后更是如此。

其他答案在2012年都是很好的答案。这些年已经过去了,今天我相信没有人应该使用现在过时的课程CalendarDate,更不用说SimpleDateFormat 。现代Java日期和时间API可以更好地使用。

使用that duplicate question中的示例,首先我们需要

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 tutorial开始。网上有更多的资料,去搜索。

答案 2 :(得分: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将字符串转换为日期。

希望这会对你有所帮助。

答案 3 :(得分:1)

尝试java.util.Calendar类型。

Calendar cal=Calendar.getInstance();
cal.setTime(yourDate.getTime());
cal.set(Calendar.YEAR,n);

答案 4 :(得分:0)

如果您需要在任何日期添加一年,请使用对象日历。

Calendar dateMoreOneYear = Calendar.getInstance();
dateMoreOneYear.setTime(dateOriginal);
dateMoreOneYear.add(Calendar.DAY_OF_MONTH, 365);

答案 5 :(得分:0)

也可以像这样(2019年6月)尝试一个月和一年

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

答案 6 :(得分:0)

org.apache.commons.lang3.timeDateUtils中存在另一个用于执行此操作的程序包。

Date date = new Date();
date = DateUtils.addYears(date, int quantity = 1);

答案 7 :(得分:-2)

试试这个......

String s = new SimpleDateFormat("YYYY").format(new Date(random_date_in_long)); // 
int i = Integer.parseInt(s)+n;