具有短日期模式的java本地化日期
有关以下代码:具有短日期模式的java本地化日期,java,date,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 = Da
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()));
}
您可以自己创建格式字符串:
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
),您可以根据自己的意愿定义输出
在这种情况下:
显示不带前导0的月份日期d
显示以0开头的月份dd
和M
相当于MM
和d
显示月份dd
以4位数字的形式显示年份yyyy
SimpleDataFormat
输出:
Current Date: 2/1/2016
Current Date: 01.02.2016
下面的代码不能保证工作,但不幸的是,这是我所知道的唯一方法,它可以与Oracle的Java7&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);
我无法模拟区域设置的变化。我不需要跟踪世界上所有的模式。我只需要更改区域设置。
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);