DateTimeFormatter在命令行执行时失效问题求助
问题排查与解决方案思路
核心问题根源:运行环境的Locale(地区设置)不一致
IntelliJ通常会继承操作系统的Locale(比如你的系统是德语区,默认用Locale.GERMAN),但命令行或CI/CD流水线的默认Locale可能是英文(Locale.ENGLISH)。日期格式中的EE是星期缩写,德语里周一的缩写是Mo.,但英文Locale下无法识别这个缩写,导致解析失败。而DateTimeFormatter默认会使用JVM的默认Locale,这就造成了不同环境下的行为差异。代码修复方案
显式为DateTimeFormatter指定德语Locale,强制统一解析规则,不受运行环境默认设置影响:LocalDateTime.parse( this.text, DateTimeFormatter.ofPattern("EE' 'dd.MM.yyyy, kk:mm 'Uhr'", Locale.GERMAN) ).toKotlinLocalDateTime()额外验证建议
- 可以在命令行手动切换Locale(比如设置
export LC_ALL=en_US.UTF-8)测试修改后的代码,确认能正常解析目标日期字符串。 - CI/CD流水线无需额外配置Locale相关环境变量,因为代码已固化了解析规则,避免后续环境变动引发同类问题。
- 可以在命令行手动切换Locale(比如设置
内容的提问来源于stack exchange,提问作者Daniel Pfeil
相关产品推荐
相关产品推荐

