2013-10-28 61 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?如果是这样,你会碰巧知道如何提出请求? –