2013-04-23 76 views
1

我有以下代碼GWT DateTimeFormat返回錯誤的日期

 String test = "21/04/2013"; 
     fmt = DateTimeFormat.getFormat("MM/dd/yyyy"); 
     Date dateTest = fmt.parse(test); 
     Window.alert(fmt.format(dateTest)); 

而且警告框顯示日期的

09/04/2014 

代替

21/04/2013 

爲什麼?

回答

5

正如其他人已經說過,這是因爲你的模式。他們沒有說的是爲什麼它的行爲如此。

當解析21/04/2013MM/dd/yyyyDateTimeFormat會分解日期:

 
Month Day of month Year 
    21  4  2013 

,然後它會調整的東西,使有效日期。爲了做到這一點,該部分在12截斷(以便臨時日期爲2013年12月4日)和餘數(21 - 12 = 9)然後加入,導致2014年9月4日 ,根據你的格式顯示爲09/04/2014

+0

嗯。我從遠更喜歡它拋出一個明確的例外,並使用滾動方法來進行這種操作。它會避免這樣的問題 – Gab 2013-04-23 19:45:23

+0

這真的很尷尬。感謝大家的回答,我爲他們提供了所有的答案。是的,一個例外會爲我解決問題:) – Mike 2013-04-23 21:12:07

+0

有什麼辦法可以逃避這種行爲嗎? – sandris 2014-05-20 11:56:47

2

你想展示21/04/2013但格式是MM/dd/yyyy。 應該dd/MM/yyyy

所以改變這樣的:

String test = "21/04/2013"; 
fmt = DateTimeFormat.getFormat("dd/MM/yyyy"); 
Date dateTest = fmt.parse(test); 
Window.alert(fmt.format(dateTest)); 
2

你倒車日期和月份。

String test = "21/04/2013"; 
fmt = DateTimeFormat.getFormat("dd/MM/yyyy"); 
Date dateTest = fmt.parse(test); 
Window.alert(fmt.format(dateTest));