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);
我有一个 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);