我正在编写多语言程序,并且已将语言环境设置为特定于国家/地区的语言环境(例如de_AT,de_DE,en_US,en_GB)。因此,如果我拨打DateFormat.getDateInstance(int fomat,Locale l)
,我总是得到英语!如果我仅使用语言环境(例如En,de,...),则可以使用
我已经审阅过Oracle Doc of DateFormat,但也以他们的示例为例,发生了错误。
这是一个示例程序:
import java.text.DateFormat;
import java.util.Locale;
import java.util.Date;
public class DateFormatTest {
public static void main(String args[]){
Locale[] locales={new Locale("de_AT"),new Locale("de_DE"), new Locale("de"), new Locale("en_US"), new Locale("en"), new Locale("fr_FR"), new Locale("fr_CA"), new Locale("fr")};
Date today= new Date();
for(Locale l: locales){
System.out.println(l.toString()+"\t"+
DateFormat.getDateInstance(DateFormat.DEFAULT,l).format(today)+"\t"+
DateFormat.getDateInstance(DateFormat.FULL,l).format(today));
}
}
}
这是输出:
huwa@hubefl-ws:~/tmp$ javac DateFormatTest.java
huwa@hubefl-ws:~/tmp$ java DateFormatTest
de_at Nov 8, 2011 Tuesday, November 8, 2011
de_de Nov 8, 2011 Tuesday, November 8, 2011
de 08.11.2011 Dienstag, 8. November 2011
en_us Nov 8, 2011 Tuesday, November 8, 2011
en Nov 8, 2011 Tuesday, November 8, 2011
fr_fr Nov 8, 2011 Tuesday, November 8, 2011
fr_ca Nov 8, 2011 Tuesday, November 8, 2011
fr 8 nov. 2011 mardi 8 novembre 2011
有人有同样的问题吗?有解决方案吗?
最佳答案
根据javadocs,构造函数是
Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
因此,当您创建
new Locale("de_AT")
时,它将尝试使用不存在的语言“ de_AT”,因此将其恢复为默认值(英语)。尝试
Locale[] locales={new Locale("de", "AT"), new Locale("de", "DE"), ...};
关于java - 带有国家/地区语言的日期格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8050405/