2013-04-23 3 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

다른 사람들이 이미 말했듯이, 그것은 당신의 패턴 때문입니다. 그들이 말하지 않는 것은 입니다. 이유는입니다.

MM/dd/yyyy으로 21/04/2013을 구문 분석, DateTimeFormat는 날짜 분해됩니다

 
Month Day of month Year 
    21  4  2013 

을하고 그 다음에 유효한 날짜를 만드는 일을 조정할 수 있습니다. 그렇게하려면 부분이 12에서 잘립니다 나머지 (그래서 일시적 날짜가 12 월 4, 2013입니다) (21-12 = 9)는 다음 9 월 4 2014을에지도 추가 형식에 따라 09/04/2014으로 표시됩니다.

+0

흠. 나는 여기에서 명백한 예외를 던지고 이런 종류의 작업을 위해 롤 메서드를 사용하는 것을 선호한다. 그것은 그러한 질문을 피했을 것입니다. – Gab

+0

그건 정말 당혹 스러웠습니다. 답변 해 주셔서 감사 드리며 모두 +1했습니다. 예, 예외는 저에게 질문을 저장했을 것입니다 :) – Mike

+0

이 동작을 피할 방법이 있습니까? – sandris

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