具有短日期模式的java本地化日期

时间:2016-02-01 10:24:36

标签: java date

对于以下代码:

public class DateFormatTest {

    @Test
    public void shouldTestDateFormat()  {

        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
        System.out.println(df.format(new Date()));

        df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.GERMANY);
        System.out.println(df.format(new Date()));
    }
}

输出结果为:

2/1/16
01.02.16

如何获得输出低于前一个输出:

2/1/2016
01.02.2016

注意:短日期的区域设置为:英语(美国),MM / dd / yyyy。

当我更改区域设置而不是短日期模式时,我需要上面的输出。我不需要关心世界上所有的模式。代码模拟了语言环境的变化:

    localize(Locale.getDefault());
    localize(Locale.GERMANY);

private void localize(Locale locale) {
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
    System.out.println(df.format(new Date()));
}

3 个答案:

答案 0 :(得分:1)

 public static void main(String args[]){  
     Date dNow = new Date( );
     SimpleDateFormat ft = new SimpleDateFormat("M/d/yyyy", Locale.GERMAN);

     System.out.println("Current Date: " + ft.format(dNow));

     ft = new SimpleDateFormat("dd.MM.yyyy", Locale.GERMAN);
     System.out.println("Current Date: " + ft.format(dNow));

}

使用SimpleDateFormat

输出

Current Date: 2/1/2016
Current Date: 01.02.2016

答案 1 :(得分:1)

以下代码不能保证可以正常工作,但不幸的是,这是我所知道的唯一方式,它适用于Oracle的Java 7& 8.如果它不起作用,它将打印一个2位数的年份。

private static void printLocalizedDate(Locale locale) {
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
    if (df instanceof SimpleDateFormat)
        df = new SimpleDateFormat(
                ((SimpleDateFormat) df).toPattern().replace("yy", "yyyy")
        );
    System.out.println(df.format(new Date()));
}

    printLocalizedDate(Locale.getDefault());
    printLocalizedDate(Locale.GERMANY);

答案 2 :(得分:0)

您可以自己创建格式字符串:

DateFormat df = new SimpleDateFormat("M/d/yyyy");
System.out.println(df.format(new Date()));

df = new SimpleDateFormat("dd.MM.yyyy");
System.out.println(df.format(new Date()));

使用这些格式字符串(M/d/yyyydd.MM.yyyy),您可以按自己的意愿自行定义输出。

在这种情况下:

  • d显示没有领先0
  • 的日期
  • dd显示日期为0的前导
  • MMM相当于d&显示月份的dd
  • yyyy以4位数字显示年份