2009-04-14 8 views
3

아래 예제 코드에서 문제가 보이지 않는 것 같습니다. 어떤 이유로 든 올해를 무시하고 날짜가 같다고 말하면서 아래 출력물에서 볼 수 있습니다. 나는 간단한 것을 놓치고 있어야합니다.datetime 변환 Java 문자열 문제

2006년 1월 28일
2007년 1월 16일
화 4월 1일 태평양 서머 타임 00시 00분 0초 2008
화 4월 1일 태평양 서머 타임 00시 00분 0초 2008
수행

import java.util.*; 
import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 

    class ExampleProgram { 
     public static void main(String[] args){ 
     DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
     String d1String = "01/28/2006"; 
     String d2String = "01/16/2007"; 
     System.out.println(d1String); 
     System.out.println(d2String); 
     Date d1=null; 
     try { 
      d1 = df.parse(d1String); 
     } catch (ParseException e) {     
      System.out.println(e.getMessage()); 
     }   
     Date d2=null; 
     try { 
      d2 = df.parse(d2String); 
     } catch (ParseException e) {     
      System.out.println(e.getMessage()); 
     } 
     System.out.println(d1); 
     System.out.println(d2); 
     System.out.println("done"); 
     } 
    } 
+0

만우절 농담? 둘 다 날짜가 모두 4 월 1 일과 일치한다는 것은 매우 복잡한 것 같습니다. + 1 년, -12 개월 == 같은 날짜. dateformat 객체가 strict 인 경우 (df.setLenient (false)) 오류가 발생합니다. – evnafets

답변

6
"dd/MM/yyyy" 

읽어야합니다

"MM/dd/yyyy" 
+0

나는 그것을 어떻게 놓쳤는가? ... 감사합니다! –

0

날짜를 Date 개체로 선언 해보십시오.

+1

그랬습니다. 생성자 Date (String)는 더 이상 사용되지 않습니다. 그는 문자열을 날짜로 변환하는 올바른 방법을 사용하고 있습니다. –

1
는 베드로가 SimpleDateFormat는 결과가 동일하게 나타납니다한다는 것이 그 이유 "MM/dd/yyyy"

을 읽어야 말했듯이 당신이 기대했던 당신을 포기하지 않을 것을 이유 때문에 당신이했습니다 형식 함께

"dd/MM/yyyy" 일 때 d1String 님의 달은 28 일입니다. 28 - 12 일에 1 년 추가하고 16 - 12 일에 1 년 추가하면 결과는 4 (4 월)이고 올해는 2008 년입니다. d2String에 대해서도 마찬가지입니다.