2016-09-20 50 views
-3

如何將當前日期存儲在Date對象中? 我想這個代碼,但它得到了一個錯誤:如何在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年9月20日]的格式化的日期存儲在「約會」對象。

+3

日期沒有格式 – Jens

回答

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())); 
+0

此方法可以將日期存儲爲日期對象... – venkey

+2

請向您的代碼添加說明。 –

+0

不,Calendar.getInstance()沒有返回一個單例實例。使用getInstance()的要點是,在決定要返回哪個日曆實現以及如何初始化它時,將考慮默認語言環境和時區。 所以你不需要做任何事情來獲得第二個日曆與當前時間,只需再次調用Calendar.getInstance()。它用於從日曆時區獲取格式的SimpleDateFormat。返回類型將字符串格式,但我們想改變爲日期格式,我已經使用瞭解析方法..最後它會成爲日期對象。 – venkey

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

要生成表示此值的字符串,請撥打toString

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

關於java.time

java.time框架是建立在Java 8和更高版本。這些類代替了令人討厭的舊日期時間類,例如java.util.Date,.Calendar,& java.text.SimpleDateFormat

Joda-Time項目現在位於maintenance mode,建議遷移到java.time。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。

大部分的java.time功能後移植到Java 6 和ThreeTenABP還適於Android(見How to use…)。

ThreeTen-Extra項目擴展java.time與其他類。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval,YearWeek,YearQuartermore