2013-10-28 1 views
0

설명서의 내용에 따라 작동한다고 생각했던 다음 코드 조각이 있습니다.Java의 SimpleDateFormat 및 Locale API

public static void main(String[] args) throws ParseException 
{ 
    SimpleDateFormat fm = new SimpleDateFormat("yyyy/MMMM/dd", // format str 
               new Locale("gd", // language = Scottish Gaelic 
                  "UK", // region = UK 
                  "scotland")); // variant = scotland 
    fm.parse("2013/an Dàmhair/25"); 
} 

이 코드를 실행하면 (적절한 가져 오기/선언이있는 클래스에 넣을 때) 다음 오류가 발생합니다.

Exception in thread "main" java.text.ParseException: Unparseable date: "2013/an Dàmhair/25" 
    at java.text.DateFormat.parse(DateFormat.java:357) 
    at Foo.main(Foo.java:15) 

누군가 버그 (및/또는 지원되지 않는 기능)인지 알려주시겠습니까?

날짜 문자열은 게 일어 언어의 명확한 유효한 날짜 문자열이며 변형/언어도 올바르게 설정됩니다. (그렇지 않으면, 나는 IllegalArgument 또는 그와 같은 것을 얻을 것을 기대할 것이다).

모든 제안 사항을 해결하는 방법도 크게 감사하겠습니다.

+3

위한 솔루션입니다 희망? 날짜 포맷터로 현재 날짜를 포맷하면 어떻게됩니까? –

+0

아, 좋은 질문입니다. 내가 확인 할게요. 감사합니다. –

+0

좋아, 그것은 나에게 평범한 영어 문자열을주고있다. 그러나 그것은 * 잘못 *입니다. 영어와 스코틀랜드 게 일어 역시 비슷합니다! –

답변

1

당신은 정의 할 수 있습니다 자신의 DateFormatSymbols

public static void main(String[] args) throws ParseException { 
    DateFormatSymbols dateFormatSymbols = new DateFormatSymbols(new Locale("gd", "UK", "scotland")); 
    // sorry I don't know the other months in Scottish Gaelic. Thus the numbers 
    dateFormatSymbols.setMonths(new String[] { "1", "2", "3", "4", "5", 
      "6", "7", "8", "9", "an Dàmhair", "11", "12" }); 

    SimpleDateFormat fm = new SimpleDateFormat("yyyy/MMMMM/dd", dateFormatSymbols); 
    System.out.println(fm.parse("2013/an Dàmhair/25")); 
} 

나는이 로케일이 실제로 사용하고있는 달 이름에 대해 알고 있나요 당신

+0

아, 재미 있습니다. 나는 그것이 나를 위해 일할 것 같아요. 감사! –

2

this list에 따르면

덕분에,이 로케일은 지원되지 않습니다.

+0

Java 7의 버전은 다음과 같습니다. http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html – DanielBarbarian

+0

A 주제를 조금 벗어나지 만 Java가 사용자로부터 일부 로켈을 추가하라는 요청을 받습니까? 그렇다면 요청을 제출하는 방법을 알고 있습니까? –