在java中存储当前日期和日期1年

我已经完成了所有设置,以便将当前日期存储到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。 我想存储2014年2月18日的日期。 我该怎么做呢?

如果您不想拖动外部库,只需使用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

使用Calendar#add(int field,int amount)方法。您应该按顺序使用Calendar API来操作日期和时间操作。

 Calendar today = Calendar.getInstance(); Calendar nextYearToday = today; nextYearToday.add(Calendar.YEAR, 1); 

TL;博士

 LocalDate.parse( "2/18/2013" , DateTimeFormatter.ofPattern ( "M/d/uuuu" ) ).plusYears( 1 ) 

细节

接受的答案是正确的,但是从Java 8开始过时了。

java.time

Java 8及更高版本中内置的java.time框架取代了麻烦的旧java.util.Date/.Calendar类。 新课程的灵感来自非常成功的Joda-Time框架,旨在作为其inheritance者,在概念上类似但重新设计。 由JSR 310定义。 由ThreeTen-Extra项目扩展。 请参阅教程 。

LocalDate

这些新类包括LocalDate ,用于表示没有时间或时区的仅日期值。

首先,我们必须解析String输入。 java.time格式化程序使用类似于旧类的模式代码,但不完全相同。 所以一定要仔细阅读新的文档。

填充零

请注意,您的输入String缺少某些值的前导零数字。 这意味着您应该使用单个模式代码, Md而不是MMdd 。 双重代码意味着您希望始终包含填充零,否则将包含其他单位数值,而不是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 and yearLater:2014-02-18

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

OutPut今天是 – > Fri Dec 01 10:10:52 GMT + 05:30 2017

expiryDate是 – > Fri Nov 30 10:10:52 GMT + 05:30 2018

今天的日期是 – > Fri Dec 01 10:10:52 GMT + 05:30 2017

expiryDate是 – > Fri Nov 30 10:10:52 GMT + 05:30 2018

在此处输入图像描述

在Android中比以往更简单:

oneYearAfterDate = new Date(date.getTime() + DateUtils.YEAR_IN_MILLIS )