use*_*772 4 java datetime locale date jodatime
我有一个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));
Run Code Online (Sandbox Code Playgroud)
这是结果:
Output1: 28/08/14
Output2: 8/28/14
Run Code Online (Sandbox Code Playgroud)
所以,输出是正确的,但我希望这样:
Output1: 28/08/2014
Output2: 08/28/2014
Run Code Online (Sandbox Code Playgroud)
如何更改默认模式?
谢谢!
而不是使用shortDate()方法来forStyle()使用Sfor Date和-for Time
DateTimeFormat.patternForStyle("S-", Locale.ITALIAN);
Run Code Online (Sandbox Code Playgroud)
然后在Pattern上执行String替换以将其更改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));
Run Code Online (Sandbox Code Playgroud)
哪个会打印:
Output1: 28/08/2014
Run Code Online (Sandbox Code Playgroud)
与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));
Run Code Online (Sandbox Code Playgroud)
哪个会打印:
Output2: 8/28/2014
Run Code Online (Sandbox Code Playgroud)
请注意,使用此方法,如果您只关心使YEAR部分为4位数,则无需担心所有Locale格式.
| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |