java - 使用 DateFormat.getDateInstance 在 java 中进行日期本地化

标签 java date date-format

我有一个必须本地化的日期。 下面的代码返回 5/1/12 19:06:34 但我想要的结果是 05/01/12 19:06:34 您能告诉我如何管理这个问题吗?

  private String localizeDate(String date){ //Format is 2012-05-01 19:30:49

    Locale loc = DataContextHolder.getDataContext().getLocale();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", loc);

    Date parsed=null;
    try {
        parsed = formatter.parse(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, loc);

    String localizedDate = df.format(parsed) + " " + date.substring(11, 13) + ":"
            + date.substring(14, 16) + ":"
            + date.substring(17, 19);

    return localizedDate;
}

最佳答案

您可以通过减少该特定元素的连续模式字母的数量来避免前导零。连续的多个模式字母告诉日期格式化程序,您至少需要那么多字符来表达该值。

在您的示例中,以下内容应该可以解决您的问题。

new SimpleDateFormat("y-M-d H:m:s", loc);

the SimpleDateFormat documentation 中查找更多信息.

为清楚起见,请参阅以下示例。

SimpleDateFormat a = new SimpleDateFormat("yyyyy-MMMM-dddd HHH:mmmm:sssss");
SimpleDateFormat b = new SimpleDateFormat("y-M-d H:m:s");

System.out.println(a.format(new Date())); 
// Prints 02012-June-0005 012:0027:00026
System.out.println(b.format(new Date()));
// Prints 12-6-5 12:27:26

关于java - 使用 DateFormat.getDateInstance 在 java 中进行日期本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10900956/

相关文章:

PHP格式日期

java - 从 HashSet 到 Arraylist 的 Dozer 映射

java - 无法在 Selenium 中截取屏幕截图

java - 如何避免重复 try block

string - 如何在dart中使用关系运算符比较日期?

android - 从两个日期中找到月份和日期的差异

java - SimpleDateFormat 解析结果很奇怪

postgresql - 带有希腊日的 Postgres 日期格式

java - 使用可选部分格式化日期

java - 忽略 WCF 服务的 Axis 客户端上的证书身份验证