Jodatime:如何打印4位数年份?

时间:2013-06-19 12:46:40

标签: java jodatime

我正在使用Jodatime格式化日期,并使用它我使用语言环境来格式化特定于语言环境。我希望我的日期格式化为“17/06/2013”​​(分隔符必须依赖于语言环境),我可以几乎实现

DateTimeFormat.forStyle("S-").withLocale(myLocale)

给出“17/06/13”(2位数年份)。风格“M-”给出“17 juin 2013”​​(locale French),这也不是我想要的。

当然我可以使用像“dd / MM / yyyy”这样的模式创建一个格式化程序,这将给我一个4位数的年份,但它不是区域设置敏感的。

我一直在寻找一种方法来修改用“S-”风格创建的格式化程序,但似乎不可能。

使用此行为获取格式化程序的最简单方法是什么?

2 个答案:

答案 0 :(得分:3)

只需获取本地化的短样式的模式,并将“yy”替换为“yyyy”(如果它尚未存在)。

String pattern = DateTimeFormat.patternForStyle("S-", locale);
if (!pattern.contains("yyyy")) {
    pattern = pattern.replace("yy", "yyyy");
}
DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern);

答案 1 :(得分:1)

作为替代方案,您可以选择使用ISO标准日期格式而不是本地日期格式。 ISODateTimeFormat.date()将返回“yyyy-MM-dd”的格式化程序。