DateTimeFormatter ofPattern使用'L'模式格式化月份显示为数字而非文本问题
问题原因
- 模式字母选择错误:
L代表独立月份格式,多数Locale的LLL短格式规则会直接输出数字月份,你需要的日期上下文内的文本缩写月份,应该使用代表标准月份格式的M对应的MMM规则。 - 未显式指定Locale:
DateTimeFormatter.ofPattern方法如果不传入Locale参数,会默认使用JVM运行环境的系统默认Locale,如果你需要输出英文的星期、月份缩写,不指定英文Locale的情况下哪怕模式字母正确也可能输出不符合预期的结果。
解决方案
调整模式字母的同时显式指定英文Locale即可,修改后的代码如下:
val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("e dd. MMM", Locale.ENGLISH)
调整后格式化LocalDateTime对象就可以得到Tue 23. Nov的预期输出。
内容的提问来源于stack exchange,提问作者Ralf Wickum
相关产品推荐
相关产品推荐

