在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缺少某些值的前导零数字。 这意味着您应该使用单个模式代码, M
和d
而不是MM
和dd
。 双重代码意味着您希望始终包含填充零,否则将包含其他单位数值,而不是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 )