2013-09-25 1 views
1

날짜 형식 문자열을 구문 분석하고 같은 패턴에 대해 서식이 지정된 문자열을 인쇄하려고합니다. 나는 그들이 동일 할 것으로 기대하고있다. 그러나 출력물이 입력물과 일치하지 않습니다. 어떤 도움이 많이 여기 Java SimpleDateFormat 구문 분석이 역 변환되지 않습니까?

을 감사하는 것은 내가 여기 JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ sudo java Test "EEE MMM dd YYYY HH:mm:ss Z (zzzz)" "Sun Sep 22 2013 20:03:46 +0530 (India Standard Time)"

출력

The formatted string: Wed Sep 25 2013 19:55:57 +0000 (Coordinated Universal Time) 
The parsed date is: Wed Jan 02 2013 19:55:57 +0000 (Coordinated Universal Time) 
The parsed date from input is: Sun Dec 30 2013 20:03:46 +0530 (India Standard Time) 

내가 기대하고있다 호출하는 방법을 내 코드 여기

import java.text.SimpleDateFormat; 
import java.util.Date; 

public class Test{ 
    public static void main(String[] args) { 
    String pattern=args[0]; 
    String dtstr = args[1]; 
    SimpleDateFormat sdf = new SimpleDateFormat(pattern); 
    Date date = new Date(); 
    try { 
     // 
     String fmtd = sdf.format(date); 
     System.out.println("The formatted string: " +fmtd); 
     System.out.println("The parsed date is: " + sdf.format(sdf.parse(fmtd))); 
     System.out.println("The parsed date from input is: " + sdf.format(sdf.parse(dtstr))); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 

입니다 formatted stringparsed strings ~ b e 동일 내가 뭘 잘못하고있는거야?

답변

4

형식 문자열에 YYYY을 사용하고 있습니다. 그것은 yyyy해야한다 :

"EEE MMM dd yyyy HH:mm:ss Z (zzzz)"; 

YWeek Year입니다 :

일주일 년은 WEEK_OF_YEAR주기와 동기화됩니다. 사이의 모든 주 첫 주와 마지막 주 (같은 기간 포함)는 같은 주 연도 값을 갖습니다. 따라서 첫 번째와 마지막 요일은 각각 연도의 값이 다를 수 있습니다.

예를 들어, 1998 년 1 월 1 일은 Thursday입니다. getFirstDayOfWeek() 경우 1997년 12월 29일, 에 MONDAYgetMinimalDaysInFirstWeek() 1998 년 시작의 다음 4 (ISO 8601 표준 호환 설정), 주 1입니다 및 주 년 지난 3 일 1998 년 1 월 4, 1998 년에 종료 그러나 getFirstDayOfWeek()SUNDAY 인 경우 1998 년 1 월 1 일부터 1998 년 1 월 4 일에 시작하여 1 월 10 일에 끝납니다.

The formatted string: Thu Sep 26 2013 01:32:09 +0530 (India Standard Time) 
The parsed date is: Thu Sep 26 2013 01:32:09 +0530 (India Standard Time) 
The parsed date from input is: Sun Sep 22 2013 20:03:46 +0530 (India Standard Time) 
: 1998 년 3 일 다음 주의 일부 1997 년 (53)과 주 년, 당신은 출력 다음 얻을 것이다 변경된 패턴으로 1997 년

입니다

관련 문제