2013-05-07 74 views
0

因爲我不擅長處理java中的日期,但我無法理解這種行爲。
這裏是我的代碼
處理Java日期格式的不可理解的行爲。

Date from = new SimpleDateFormat("dd/MM/yyyy").parse("05/07/2013"); 
System.out.println(from); 


這給了我這個輸出

Sat Jul 05 00:07:00 PKT 2013


這是第二另一代碼片段

Date from = new SimpleDateFormat("dd/mm/yyyy").parse("05/07/2013"); 
System.out.println(from); 


這給了我這樣的輸出:
Sat Jan 05 00:07:00 PKT 2013

現在,這是相當大的事情是格式。
這種格式dd/MM/yyyy其中有MM給了我正確的輸出,但這種格式dd/mm/yyyy其中有小mm給了我錯誤的輸出(總是給月jan)。我讀的文檔中提到samll米是分鐘和大寫M是爲月
我的問題是我可以在這裏不使用小米嗎?如果沒有,那麼爲什麼它被賦予的結果,在此基礎上它給jan每次

我知道這是一個基本的問題,但搜索和沒有發現任何東西理解後後,我貼it.Thanks

+0

@Downvoter您能否關心評論? – Despicable 2013-05-07 10:05:51

回答

4
Date from = new SimpleDateFormat("dd/mm/yyyy").parse("05/07/2013"); 

您的格式mm是分鐘。 MM是月份。

這些格式化佔位符是固定的。小米總是幾分鐘。它是一月份,因爲這是默認月份值。

4

毫米是分鐘,所以你沒有任何月份在你的約會。因此,我猜這個月初始化爲0(1月)

0

它不失敗的原因是因爲默認格式化程序是寬鬆的。如果您希望它在格式器對象上失敗,然後setLenient(false)

儘管我不認爲它會在你的情況下失敗,就像在你的例子中,它會將07讀作分鐘。

0

當使用

Date from = new SimpleDateFormat("dd/mm/yyyy").parse("05/07/2013"); 

簡單毫米爲分鐘,因此我認爲一個月的值被假定爲0,因此它給揚爲默認值,以便使用MM的一個月。

0

我想它來自於calendar.clear(),它將指向1970年1月1日。然後它會爲您添加解析數據= 2013年(YY),5天(dd)和7分鐘(mm)。使用MM的月份