我有一个LocalDate,我想根据Locale格式模式将日期和日期打印为2位数,将年份打印为4位数。 实际上,我可以使用DateTimeFormatter设置短日期,但不幸的是,#34;我不能"#34;更改默认模式...是否有方法可以执行此操作?
下面,我用一个例子解释一下:
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
如何更改默认模式?
谢谢!
答案 0 :(得分:5)
使用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位数字,则不必担心知道所有语言环境格式。
答案 1 :(得分:2)
您应该撰写自己的格式模式。在您的特定情况下,它将是:
DateTimeFormatter formatterOutput1 = DateTimeFormat.forPattern("dd/MM/yyyy");
DateTimeFormatter formatterOutput2 = DateTimeFormat.forPattern("MM/dd/yyyy");