Java 从日期类向随机日期添加年份
假设我有这个:Java 从日期类向随机日期添加年份,java,Java,假设我有这个: PrintStream out = System.out; Scanner in = new Scanner(System.in); out.print("Enter a number ... "); int n = in.nextInt(); 我有一个随机日期,例如,2015年6月5日(不是固定日期,每次都是随机的)。若我想把这个日期的“年”加上今年的“n”,我该怎么做 Date类中没有一个方法是“int” 要从整数中添加年份,“年份”也必须是整数。您需要将日期转换为
PrintStream out = System.out;
Scanner in = new Scanner(System.in);
out.print("Enter a number ... ");
int n = in.nextInt();
我有一个随机日期,例如,2015年6月5日(不是固定日期,每次都是随机的)。若我想把这个日期的“年”加上今年的“n”,我该怎么做
Date类中没有一个方法是“int”
要从整数中添加年份,“年份”也必须是整数。您需要将
日期
转换为日历
Calendar c = Calendar.getInstance();
c.setTime(randomDate);
c.add(Calendar.YEAR, n);
newDate = c.getTime();
您可以将年份(或其他字段)作为日历处理,然后将其转换回日期。请尝试
java.util.Calendar
键入
Calendar cal=Calendar.getInstance();
cal.setTime(yourDate.getTime());
cal.set(Calendar.YEAR,n);
日期
类对您没有帮助,但日历
类可以:
Calendar cal = Calendar.getInstance();
Date f;
...
cal.setTime(f);
cal.add(Calendar.YEAR, n); // Where n is int
f = cal.getTime();
请注意,您仍然必须为f
变量指定一个值。我经常使用SimpleDateFormat
将字符串转换为日期
希望这对你有帮助。试试这个
String s = new SimpleDateFormat("YYYY").format(new Date(random_date_in_long)); //
int i = Integer.parseInt(s)+n;
如果需要在任意日期添加一年,请使用对象日历
Calendar dateMoreOneYear = Calendar.getInstance();
dateMoreOneYear.setTime(dateOriginal);
dateMoreOneYear.add(Calendar.DAY_OF_MONTH, 365);
这个问题早就应该有一个现代的答案。在被认为是这个问题的重复之后,情况更是如此 其他答案在2012年都是不错的答案。多年过去了,今天我相信没有人应该使用现在已经过时的类
日历
和日期
,更不用说简化格式
。现代的Java日期和时间API非常好用
使用来自的示例,首先我们需要
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?
你可以从这个开始。网上有更多的资料,去搜索吧。也可以像这样尝试一个月或一年(2019年6月)
另一个这样做的包存在于
org.apache.commons.lang3.time
,DateUtils
中
Date date = new Date();
date = DateUtils.addYears(date, int quantity = 1);
这将在当前日期的基础上增加3年,并打印年份
System.out.println(LocalDate.now().plusYears(3).getYear());
如果我的约会对象是SimpleDateFormat类呢?c.设置时间(随机日期);我该怎么办?@user1519192每当你得到一个要解析为日期的字符串时,你可以使用你的
SimpleDateFormat
的parse()
方法。SimpleDataFormat不是日期,它是一种日期可以表示的格式定义,用于将日期
转换为字符串
,反之亦然。对于闰年之类的情况,它会失败。这真是个坏主意,不包括闰年(366天)。
System.out.println(LocalDate.now().plusYears(3).getYear());