You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何将MMYYYY格式字符串正确解析为YearMonth类型

问题根因

你的日期格式模式写法错误:

  • 模式中大写的YYYY代表基于周的年份(week-based year),是和ISO周历规则绑定的特殊年份字段,不是日常使用的公历年,YearMonth解析时无法通过该字段获取构造所需的公历年值,会直接抛出DateTimeParseException
  • 表示四位数字公历年的正确模式字符是小写的y,即四位年份对应模式为yyyy
修正后的实现代码
import java.time.YearMonth
import java.time.format.DateTimeFormatterBuilder
import java.util.Locale

fun main() {
    val formatter = DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .appendPattern("MMyyyy") // 仅需把原模式里的YYYY替换为小写yyyy即可
        .toFormatter(Locale.ENGLISH)

    // 测试解析
    println(YearMonth.parse("011970", formatter)) 
    // 控制台输出:1970-01,完全符合预期
}
补充说明

修正后的模式MMyyyy和你的MMYYYY格式要求完全匹配:MM对应带前导零的两位数字月份,yyyy对应四位数字年份,所有符合该长度规则的日期字符串都能正常解析,不需要额外做格式兼容处理。

内容的提问来源于stack exchange,提问作者Aswath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 12:27:17