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

时间:2015-04-21 07:49:54

标签: java spring date-format date-formatting

我的课程正在准备从2015年2月13日到2015年2月13日的db format 的日期。不幸的是,这个功能适用于英语,法语,但不适用于中文。

这是我得到的:

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嵌入式类中提供解决方案。

1 个答案:

答案 0 :(得分:1)

对于您的输入格式,您不必使用区域设置构建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);