【问题标题】:Formatting Date in Java using Locale使用语言环境在 Java 中格式化日期
【发布时间】:2015-05-31 20:44:57
【问题描述】:

我正在尝试根据区域设置值格式化日期,我已经在 SO 中通过 this post 但我无法根据我的要求获取数据。

这是我尝试过的:

DateFormat f = DateFormat.getDateInstance(DateFormat.SHORT, Locale.UK);

String d = f.format(new Date());

System.out.println(d);

This prints the output as :27/03/15

但对于这一年,我希望它打印为 2015 而不是 15,如输出所示。

如果是US 语言环境,则输出应为03/27/2015

【问题讨论】:

标签: java


【解决方案1】:

MM 而不是mm

SimpleDateFormat sf = new SimpleDateFormat("MM/dd/yyyy", Locale.UK);

【讨论】:

    【解决方案2】:

    试试这个

    SimpleDateFormat sf = new SimpleDateFormat("MM/dd/yyyy");
    

    mm 表示分钟,MM - 月,这里的Locale 也没有影响

    【讨论】:

    • 对不起,我更新了我的问题,因为我之前的问题令人困惑。我的要求是根据语言环境输出结果。现在我已经发布了关于美国和英国应该如何的输出。
    • 我需要基于语言环境的输出,你能告诉我我们该怎么做吗?
    【解决方案3】:

    您可以使用预定义的格式,这些格式经过精心设计,与给定语言环境的格式内联。或者您创建一个包装类/方法以使用 JDK 中的默认值与您的特殊格式合并。

    这里是一个包装方法的例子

    public static void main(String[] args) throws Exception {
        DateFormat f = getDateFormat(Locale.UK);
        System.out.println("UK: " + f.format(new Date()));
    
        f = getDateFormat(Locale.US);
        System.out.println("US: " + f.format(new Date()));
    }
    
    static DateFormat getDateFormat(Locale locale) {
        if (locale == Locale.UK) {
            return new SimpleDateFormat("dd/MM/yyyy", Locale.UK);
        } else {
            return DateFormat.getDateInstance(DateFormat.SHORT, locale);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多