对于以下代码:
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()));
}
答案 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/yyyy
和dd.MM.yyyy
),您可以按自己的意愿自行定义输出。
在这种情况下:
d
显示没有领先0 dd
显示日期为0的前导M
和MM
相当于d
&显示月份的dd
yyyy
以4位数字显示年份