Spring - DateFormat 没有为中国正确格式化日期

Spring - DateFormat is not formatting dates properly for China

我有一个 class 正在准备日期从 db format 像 2015/02/13 到 2015 年 2 月 13 日 。不幸的是,此功能适用于英语、法语,但不适用于中文。

这是我得到的:

public class DateFormatTag extends TagSupport {
    @Override
    public int doStartTag() throws JspException {
       out.println(dateFormat(getInput()));
    }

    public String dateFormat(String input) throws ParseException {
        Locale locale = new Locale("cn", "zh");
        DateFormat df = new SimpleDateFormat("yyyy/MM/dd", locale);
        Date date =  df.parse(input);
        SimpleDateFormat returnFormat = new SimpleDateFormat("dd MMMMM yyyy", locale);
        return returnFormat.format(date);
    }

为了测试,我故意硬编码了中文语言环境。输入格式为:2015/02/15 (yyyy/mm/dd).

我找不到更好的方法来解决这个问题。任何建议将不胜感激。

可能会在 Joda Time 或 Java 嵌入式 classes 中提供解决方案。

对于您的输入格式,您不必使用语言环境构建 SimpleDateFormat
对于输出,您应该阅读the doc for Locale

DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date date =  df.parse(input);
SimpleDateFormat returnFormat 
    = new SimpleDateFormat("dd MMMMM yyyy", Locale.CHINA); 
// or Locale.CHINESE, Locale.PRC, all work on my machine
return returnFormat.format(date);