2011-05-13 3 views
5

날짜 문자열을 구문 분석하려고하지만 비참하게 실패합니다. 내 문제를 설명하기 위해 나는이 간단한 JUnit 테스트를 썼다 :SimpleDateFormatter가 달을 인식하지 않습니다.

@Test 
public void testParseJavaDate() throws ParseException {  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD_HH-mm-ss", Locale.GERMAN); 

    String inputtime = "2011-04-21_16-01-08"; 
    Date parse = sdf.parse(inputtime); 

    assertEquals(inputtime,sdf.format(parse)); 
} 

이 시험은이 메시지와 함께 실패합니다

org.junit.ComparisonFailure : 예상 : < 2011-0 [4] -21_16 -01-08> 하지만했다 : < 2011-0 [1] -21_16-01-08>

포맷터가 제대로 날짜를 구문 분석 할 수 없습니다 왜하지 않습니다. 아이디어가 있습니까?

답변

6
당신은 "DD"(월 일),하지 "DD"(해 일) 원하는

: D

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.GERMAN); 
3

사용 d 대신 D에서, '올해의 날'이기 때문에, 1 월은 1 월에있는 21 번째 날과 일치해야합니다.

8

SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd_HH-mm-ss", Locale.GERMAN);

String inputtime = "2011-04-21_16-01-08"; 
Date parse = sdf.parse(inputtime); 

은 DD 대신 dd를 사용합니다.

0

이전의 모든 권리이지만, u는 또한 'MM'대신에 'mm'를 사용하고 반대 바이스해야하기 때문에 필요에 따라서 0을 선두에 'M'표시 분

다음과 같이 너무 통해 UR 코드가 될 것입니다

public void testParseJavaDate() throws ParseException { 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd_HH-MM-ss", Locale.GERMAN); 

    String inputtime = "2011-04-21_16-01-08"; 
    Date parse = sdf.parse(inputtime); 

    sdf = new SimpleDateFormat("dd/mm/yyyy HH:MM:ss", Locale.GERMAN); 

    System.out.println(sdf.format(parse)); 

    assertEquals(inputtime, sdf.format(parse)); 
} 

그것은 인쇄됩니다

run: 21/04/2011 16:01:08 BUILD SUCCESSFUL (total time: 0 seconds)

관련 문제