我有一个 LocalDate,我想根据 Locale 格式模式打印日期,其中日期和月份为 2 位数字,年份为 4 位数字。 实际上,我可以使用 DateTimeFormatter 来设置短日期,但不幸的是“我不能”更改默认模式...有没有办法做到这一点?
下面我举例说明一下:
Locale l = Locale.ITALIAN;
LocalDate localDate = new LocalDate( 2014, 8, 28);
DateTimeFormatter formatterOutput1 = DateTimeFormat.shortDate().withLocale(l);
System.out.println( "Output1: " + formatterOutput1.print(localDate));
l = Locale.ENGLISH;
DateTimeFormatter formatterOutput2 = DateTimeFormat.shortDate().withLocale(l);
System.out.println( "Output2: " + formatterOutput2.print(localDate));
这是结果:
Output1: 28/08/14
Output2: 8/28/14
所以,输出是正确的,但我希望这样:
Output1: 28/08/2014
Output2: 08/28/2014
如何更改默认模式?
谢谢!
最佳答案
不使用 shortDate()
的方法是使用 forStyle()
,使用 S
表示日期和 -
时间
DateTimeFormat.patternForStyle("S-", Locale.ITALIAN);
然后在模式上进行字符串替换,将您的 yy
更改为 yyyy
例子:
LocalDate localDate = new LocalDate(2014, 8, 28);
String pattern = DateTimeFormat.patternForStyle("S-", Locale.ITALIAN);
pattern = pattern.replace("yy", "yyyy");
DateTimeFormatter formatterOutput1 = DateTimeFormat.forPattern(pattern);
System.out.println("Output1: " + formatterOutput1.print(localDate));
将打印:
Output1: 28/08/2014
同样适用于 ENGLISH Locale:
String patternEnglish = DateTimeFormat.patternForStyle("S-", Locale.ENGLISH);
patternEnglish = patternEnglish.replace("yy", "yyyy");
DateTimeFormatter formatterOutput2 = DateTimeFormat.forPattern(patternEnglish);
System.out.println("Output2: " + formatterOutput2.print(localDate));
将打印:
Output2: 8/28/2014
请注意,使用这种方法,如果您只关心使 YEAR 部分成为 4 位数字,则不必担心了解所有区域设置格式。
关于java - 在 JodaTime 中更改 shortDate() 格式的日期模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25551011/