2014-05-22 5 views
0

코드를 먼저 작성하십시오.joda date DateTimeFormatterBuilder append가 작동하지 않습니다.

@Test 
public void testDateFormat() 
{ 
    // this is ok 
    DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("2014-5-15 20:00:00"); 
    DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2014-5-15"); 

    DateTimeFormatter formatter = new DateTimeFormatterBuilder() 
      .appendPattern("yyyy-MM-dd HH:mm:ss") 
      .appendPattern("yyyy-MM-dd") 
      // ues these way is also failed. 
      //.append(DateTimeFormat.forPattern("xxxx")) 
      //.append(DateTimeFormat.forPattern("xxxx").getParser()) 
      .toFormatter(); 

    try 
    { 
     formatter.parseLocalDateTime("2014-5-15 20:00:00"); 
    }catch (Exception ignored){System.out.println("Failed A");} 
    try 
    { 
     formatter.parseLocalDateTime("2014-05-15 20:00:00"); 
    }catch (Exception ignored){System.out.println("Failed B");} 
    try 
    { 
     formatter.parseLocalDateTime("2014-5-15"); 
    }catch (Exception ignored){System.out.println("Failed C");} 
    try 
    { 
     formatter.parseLocalDateTime("2014-05-15"); 
    }catch (Exception ignored){System.out.println("Failed D");} 
} 

출력

Failed A:Invalid format: "2014-5-15 20:00:00" is too short 
Failed B:Invalid format: "2014-05-15 20:00:00" is too short 
Failed C:Invalid format: "2014-5-15" is too short 
Failed D:Invalid format: "2014-05-15" is too short 

모두 실패했습니다. 내가 뭔가 잘못하고 있는거야? 괜찮을 것 같습니다.

+0

어떻게'2014년 5월 15일 20 않습니다 : 00 : 'YYYY-MM-DD HH에 맞게 00' : mm : ssyyyy-MM-dd' 또는 그 문제에 대해 제공하는 다른 예 중 하나를? – MadProgrammer

+0

append가 모두 연결됨? 포매터의 배열이 아닌가? – wener

+0

아니요, 추가는 연결입니다. "나는 여러 포매터가 있는데, 하나가 될 때까지 시도해보십시오."... 너 자신을 써야 할 것입니다.) – MadProgrammer

답변

2

이 작업을 수행하려면 this

오른쪽 길을 발견.

DateTimeFormatter formatter = new DateTimeFormatterBuilder() 
      .append(null, 
        new DateTimeParser[]{DateTimeFormat.forPattern("yyyy-MM-dd").getParser(), 
          DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").getParser()}) 
      .toFormatter(); 
관련 문제