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

bar*_*kyo 38 java date

我已经完成了所有设置,以便将当前日期存储到Java中的变量中.我想弄清楚的是如何在当前日期之后存储1年的日期.

import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.util.Scanner;
import java.util.Calendar;
Run Code Online (Sandbox Code Playgroud)

这是我目前的日期:

DateFormat newDate = new SimpleDateFormat("MM/dd/yyyy");
Date date = new Date();
startDate = newDate.format(date);
Run Code Online (Sandbox Code Playgroud)

因此,如果今天是例如它将存储2/18/2013.我想存储2014年2月18日的日期.我该怎么做呢?

iTe*_*ech 99

如果您不想拖动外部库,只需使用 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();
Run Code Online (Sandbox Code Playgroud)

请注意,如果日期是,29/Feb/2012并且您添加了1年,您将获得28/Feb/2013


Bas*_*que 9

TL;博士

LocalDate.parse( 
    "2/18/2013" , 
    DateTimeFormatter.ofPattern ( "M/d/uuuu" ) 
).plusYears( 1 )
Run Code Online (Sandbox Code Playgroud)

细节

接受的答案是正确的,但过时的如Java 8中.

java.time

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

LocalDate

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

首先,我们必须解析String输入.该java.time格式化使用类似于老班,但不完全相同的图形码.所以一定要仔细阅读新的文档.

填充零

请注意,您的输入String缺少某些值的前导零数字.这意味着你应该使用单一的图形码,Md而不是MMdd.双重代码意味着您希望填充零始终包含在其他单位数值中,02而不是2.

String input = "2/18/2013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "M/d/uuuu" );
LocalDate localDate = LocalDate.parse ( input , formatter );
Run Code Online (Sandbox Code Playgroud)

加一年.java.time框架负责闰年.

LocalDate yearLater = localDate.plusYears ( 1 );
Run Code Online (Sandbox Code Playgroud)

转储到控制台.

System.out.println ( "localDate: " + localDate + " and yearLater: " + yearLater );
Run Code Online (Sandbox Code Playgroud)

localDate:2013-02-18 and yearLater:2014-02-18


关于java.time

java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date,Calendar,和SimpleDateFormat.

现在处于维护模式Joda-Time项目建议迁移到java.time类.

要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.

您可以直接与数据库交换java.time对象.使用符合JDBC 4.2或更高版本的JDBC驱动程序.不需要字符串,不需要课程.java.sql.*

从哪里获取java.time类?

ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval,YearWeek,YearQuarter,和更多.

  • 亲爱的Down-Voter,请在投票时留下批评. (2认同)

Per*_*ror 6

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

Calendar today = Calendar.getInstance(); 
Calendar nextYearToday = today;
nextYearToday.add(Calendar.YEAR, 1);
Run Code Online (Sandbox Code Playgroud)