2011-05-26 112 views
1

我得到了一個常見的問題,我想解析一個字符串到日期。Java解析字符串日期返回錯誤日期

該字符串看起來像這樣15.06.11 13:38:33 UTC。但是,使用用於解析字符串到日期的相同格式化程序進行格式化時,結果爲15.38.0011 13:38:33 UTC。 TimeInMillis返回負值-61818978087000

SimpleDateFormat formatter = new SimpleDateFormat("dd.mm.yyyy HH:mm:ss z"); 
formatter.setLenient(false); 
Date time = formatter.parse("15.06.11 13:38:33 UTC");  
Calendar timestamp = Calendar.getInstance(); 
timestamp.setTime(time); 

我很感謝我能得到的每一個幫助。也許我犯了一些愚蠢的錯誤,但我沒有看到它。請睜開我的眼睛。

回答

10

月份是MM,不mm(這是分鐘)
yyyyyy(你今年是2位數的,因爲它似乎)(感謝彼得注意到,)

3

讓它

dd.MM.yyyy HH:mm:ss z 

Doc

M Month in year Month July; Jul; 07 
m Minute in hour Number 30 
+0

歡迎您:) – 2011-05-26 12:11:03

1

您需要一個月改爲MM也是逐年變化yy以其它方式使用yyyy就會認爲15.06.11是在今年11,而不是2011

System.out.println(new SimpleDateFormat("dd.MM.yy HH:mm:ss z") 
         .parse("15.06.11 13:38:33 UTC")); 

版畫,我(因爲我GMT +1)

Wed Jun 15 14:38:33 BST 2011 
+1

+1的一年。 – Bozho 2011-05-26 12:12:58

+0

我總是嘗試自己的代碼。假設代碼的其餘部分是正確的,我已經被多次發現。 ;) – 2011-05-26 12:15:42