国际化Java

时间:2011-03-27 13:54:49

标签: java internationalization date-formatting

有没有办法覆盖国际化的默认值?

例如,如果我以EEEE格式获得日期,它会给我星期日,但我想要像 Sunnyday 这样的东西。

"EEEE, dd MMM, yyyy"给了我2011年3月27日星期日

我希望"EEEE, dd MMM, yyyy"给我Sunnyday,2011年3月27日

2 个答案:

答案 0 :(得分:3)

DateFormat使用的字符串由类DateFormatSymbols的对象定义,该对象具有setXXX个方法。所以你可以试试这个:

 DateFormatSymbols englishSymbols = DateFormatSymbols.getInstance(Locale.ENGLISH);
 DateFormatSymbols mySymbols = (DateFormatSymbols)englishSymbols.clone();
 String[] weekdays = mySymbols.getWeekdays();
 weekdays[Calendar.SUNDAY] = "Sunnyday";
 mySymbols.setWeekdays(weekdays);
 DateFormat f = new SimpleDateFormat("EEEE, dd MMM, yyyy", mySymbols);

 System.out.println(f.format(new Date()));

它显示给我:Sunnyday, 27 Mar, 2011

答案 1 :(得分:1)

您必须设置区域设置,这是法国的示例:

Locale frLocale = new Locale("fr", "FR");
SimpleDateFormat formatter = new SimpleDateFormat("EEE d MMM yy", frLocale);
Date today = new Date();
String output = formatter.format(today);
System.out.println(output);

输出: dimanche 27 mars 11

或者如果你想拥有自己的名字:

String[] monthNames = {"cold January", "warm February" ...};     
Calendar cal = Calendar.getInstance();
String month = monthName[cal.get(Calendar.MONTH)];     
System.out.println("Month name: " + month);