从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
您需要将Date
转换为Calendar
。
Calendar c = Calendar.getInstance(); c.setTime(randomDate); c.add(Calendar.YEAR, n); newDate = c.getTime();
您可以将年份(或其他字段)作为日历进行操作,然后将其转换回日期。
这个问题一直是一个现代的答案。 在Java 8中添加10年到当前日期之后,更多的是被认为是这个问题的重复。
其他答案在2012年都是很好的答案。这些年已经过去了,今天我相信没有人应该使用现在过时的类Calendar
和Date
,更不用说SimpleDateFormat
。 现代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?
您可以从Oracle教程开始。 网上有更多的资料,去搜索。
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
将字符串转换为日期。
希望这对你有所帮助。
试试java.util.Calendar
类型。
Calendar cal=Calendar.getInstance(); cal.setTime(yourDate.getTime()); cal.set(Calendar.YEAR,n);
如果您需要在任何日期添加一年,请使用对象日历。
Calendar dateMoreOneYear = Calendar.getInstance(); dateMoreOneYear.setTime(dateOriginal); dateMoreOneYear.add(Calendar.DAY_OF_MONTH, 365);
试试这个….
String s = new SimpleDateFormat("YYYY").format(new Date(random_date_in_long)); // int i = Integer.parseInt(s)+n;
- 具有多个选项的Android意图,即使用前置摄像头从gallary中选择图像并捕获图像
- Android:FragmentPagerAdapter不保存Fragment的状态?
- 渲染期间引发exception:RelativeLayout中不存在循环依赖关系exception详细信息记录在窗口>显示视图>错误日志中
- 如何在JAVA中替换BufferedImage中的颜色
- 在Edittext中输入十进制值?
- 创建一个较慢的过渡。 TransitionManager.beginDelayedTransition(); 太快了
- 如何在谷歌应用引擎上构建的两个应用之间安全地建立通信?
- JPA GenerationType.AUTO没有考虑具有自动增量的列
- 如何使用System.out.printf