DateTimeFormatter解析JUN格式月份日期失败的问题咨询
DateTimeFormatter解析JUN格式月份日期失败的问题咨询
嗨,你这个问题我之前也碰到过!其实根源就是**Locale(区域设置)**在搞鬼~
你当前代码里的DateTimeFormatter默认用的是JVM的系统默认Locale,如果你的默认Locale不是英文环境,MMM这个模式就识别不了英文的月份缩写"JUN",这就是为啥报错说在索引0的位置解析失败——它根本认不出"JUN"是什么月份呀。
给你两个实用的解决办法:
创建Formatter时直接指定英文Locale
最简单的方式就是在ofPattern方法里多传一个英文Locale参数,比如Locale.US或者Locale.ENGLISH,修改后的代码如下:String dateString = "JUN 2023"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM yyyy", Locale.US); try { YearMonth startDateL = YearMonth.parse(dateString, formatter); System.out.println(startDateL); } catch (Exception e) { System.out.println("Error parsing YearMonth: " + e.getMessage()); }全局设置JVM默认Locale为英文(按需使用)
如果你的整个应用都需要基于英文环境解析日期,可以在程序启动时设置默认Locale:Locale.setDefault(Locale.US);不过要注意,这个设置会影响整个JVM里所有依赖Locale的功能,比如数字格式、消息国际化这些,所以得根据你的实际场景来用。
你可以试试第一个方法,加上Locale参数后,代码应该就能正常把"JUN 2023"解析成2023-06啦。
备注:内容来源于stack exchange,提问作者Dattatreya Kugve
相关产品推荐
相关产品推荐

