2013-10-28 59 views
0

我有以下一段代碼,我認爲它可以按照文檔承諾的方式工作,但它沒有!SimpleDateFormat和Java中的語言環境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) 

任何人都可以告訴我,如果這是一個錯誤(和/或不支持的功能)?

日期字符串在蓋爾語中是明顯有效的日期字符串,並且變體/語言也是正確設置的。 (否則,我會期望得到非法武裝或類似的東西)。

任何建議如何解決它也將不勝感激。

感謝,

+3

的解決方案是否真正的Locale知道你正在使用的月份名稱?如果使用日期格式化程序格式化當前日期,會發生什麼情況? –

+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是否接受來自用戶的請求來添加一些Locale?如果是這樣,你會碰巧知道如何提出請求? –