使用Locale在Java中格式化日期

时间:2015-03-27 13:41:19

标签: java

我正在尝试根据区域设置值格式化日期,我在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

3 个答案:

答案 0 :(得分:0)

MM代替mm

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

答案 1 :(得分:0)

试试这个

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

mm表示分钟,MM - 月,此处的Locale也没有效果

答案 2 :(得分:0)

您可以使用预先定义的格式,这些格式可以与给定语言环境的格式内联。或者,您创建一个包装器类/方法,以使用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);
    }
}