java - Spring - DateFormat 未正确格式化中国的日期

标签 java spring date-format date-formatting

我有一个类(class)正在准备 db 格式 的日期如 2015 年 2 月 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 嵌入式类中提供。

最佳答案

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

关于java - Spring - DateFormat 未正确格式化中国的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29766049/

相关文章:

java - 代码位数

java - Hibernate工具Pojo Generation默认使用Set

java - 如何修复 Fortify 竞争条件 : Singleton Member Field issue

java - 加权二维数组中两点之间的最短路径

java - Arquillian TomEE 测试性能

java - 无法在 spring web mvc 中将 .jsp 与 .css 链接

java - 将 JSON 映射传递给 Spring MVC Controller

java - 在 Spring MVC Web 应用程序中为 JQuery DatePicker 提供基于区域设置的日期格式的最佳方法?

java - 在 Android 中以本地化格式从字符串中单独显示日期和时间

java - 在 Java 中使用 DateFormat 格式化 Date 对象