2016-08-25 1 views
0

클래스 SimpleDateFormat과 관련하여 질문이 있습니다. 날짜 문자열의 형식을 변환하고 싶습니다. 콘솔에서Java SimpleDateFormat의 홀수 결과 구문 분석

public class Main { 

private static final SimpleDateFormat oldSimpleDateFormat = new SimpleDateFormat("dd.MM.YYYY"); 
private static final SimpleDateFormat newSimpleDateFormat = new SimpleDateFormat("YYMMdd"); 
private static String oldDate = "21.11.2011"; 
private static Date myDate = oldSimpleDateFormat.parse(oldDate, new ParsePosition(0)); 
private static String newDate = newSimpleDateFormat.format(myDate); 

public static void main(String[] args){ 
    System.out.println(myDate); 
    System.out.println(newDate); 
} 
} 

결과는 월 월 중부 유럽 표준시 00시 00분 0초 2011 03 있습니다 날짜가 21.11.2011이고, 나는 그것이 111121.

이을로 변환 할 것은 내 코드입니다 110103. 따라서 서식 부분은 올바르게 작동하지만 구문 분석 부분은 예상대로 작동하지 않습니다.

+0

입력 한 문자열은 21.11.2011 – Benjamin

답변

1

yyyy (소문자)을 사용해야 할 때 YYYY (대문자)을 사용하고 있습니다.

Y은 "주년"을 의미합니다. y은 "연도"를 의미합니다.

+0

인 oldDate 예입니다. 맞습니다. 고마워요! – Benjamin

+0

VTC로주세요. 가능한 복제본은 다음과 같습니다 : http://stackoverflow.com/questions/27739514/simpledateformatdd-mmm-yyyy-printing-year-one-year-ahead?noredirect=1&lq=1 –

+0

흠 .. 직관적으로 당신은'YYYY 그 특정 날짜가 연말 연시로부터 너무 멀기 때문에 '중요하지 않습니다. 일반적으로 12 월 말 또는 1 월 날짜 시작과 함께 오류가 표시됩니다 (제안 된 복제본의 경우와 동일). –

0

SimpleDateFormat에 대한 javadoc을 확인하십시오. 대개의 경우 대문자/소문자로 인해 문제가 발생합니다. 이 경우 대문자 Y는 "주년"(그게 뭐든간에)이고 소문자 y는 "연도"입니다. Y를 Y로 변경하면 작동합니다.