3

我正在使用 Jodatime 格式化日期,并使用它使用区域设置来格式化特定区域设置。我希望我的日期格式像“17/06/2013”​​(分隔符必须取决于语言环境),我几乎可以用

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

给出“17/06/13”(两位数年份)。样式“M-”给出“17 juin 2013”​​(法语区域),这也不是我想要的。

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

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

获得具有这种行为的格式化程序的最简单方法是什么?

4

2 回答 2

3

只需获取本地化短样式的模式,如果“yy”不存在,则将“yy”替换为“yyyy”。

String pattern = DateTimeFormat.patternForStyle("S-", locale);
if (!pattern.contains("yyyy")) {
    pattern = pattern.replace("yy", "yyyy");
}
DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern);
于 2013-06-19T16:18:18.357 回答
1

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

于 2013-06-19T13:03:41.560 回答