如何在Date类型对象中存储日期

时间:2016-09-20 05:03:47

标签: java date simpledateformat

如何将当前日期存储在Date对象中? 我尝试了这段代码,但是收到了错误:

SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
Date date = new Date();
date=dtf.parse(dtf.format(( cal.get(cal.YEAR)+""+cal.get(cal.MONTH)+""+cal.get(cal.DAY_OF_MONTH))));

我想将今天[2016-09-20]的格式化日期存储在“日期”对象中。

2 个答案:

答案 0 :(得分:4)

TL;博士

LocalDate.parse( "2016-09-20" )

LocalDate

您正在使用现在由java.time类取代的麻烦的旧遗留类。更糟糕的是,您正在尝试将仅限日期的值填充到具有java.util.Date类的日期时间对象中。

LocalDate类表示没有时间且没有时区的仅限日期的值。

您的输入字符串符合ISO 8601标准格式。默认情况下,java.time类使用ISO 8601格式来解析/生成字符串。所以不需要指定任何格式化模式。

LocalDate ld = LocalDate.parse( "2016-09-20" ) ;

要生成表示此值的String,请调用toString

String output = ld.toString() ;  // 2016-09-20

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如java.util.Date.Calendar和& java.text.SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 1 :(得分:0)

SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
System.out.println(dtf.format(cal.getTime()));
Date date=new  Date();
date=dtf.parse(dtf.format(cal.getTime()));