flutter DateFormat 解析时间报错Trying to read MM from ... at 14

146 阅读1分钟

void main() {
  String dateString = DateFormat("yyyyMMddHHmmss").format(DateTime.now()); // 24小时制

  try {
    DateTime dateTime = DateFormat("yyyyMMddHHmmss").parse(dateString);
    print(dateTime);
  } catch (e) {
    print("解析出错: $e");
  }
}

两个格式一样的,为什么会报Trying to read MM from ... at 14" 这样的错误

将当前时间格式化为yyyyMMddHHmmss格式可以正常输出:20250214144455

但是再将这个字符串格式化回去就会报上述错误

格式字符串:yyyyMMddHHmmss 日期字符串:20250214144455 解析器期望的格式是 yyyyMMddHHmmss, 即: yyyy:年份(4位) MM:月份(2位) dd:日期(2位) HH:小时(24小时制,2位) mm:分钟(2位) ss:秒(2位) MM月份不就是第 5 和第6位吗?为什么要去第14位读取 MM

按照 yyyyMMddHHmmss 的格式,月份 (MM) 应该出现在字符串的第 5-6 位,即:

20250214144455
^^^^MM^^^^

其中:

  • 2025 -> yyyy(年份)
  • 02 -> MM(月份)
  • 14 -> dd(日期)
  • 14 -> HH(小时,24小时制)
  • 44 -> mm(分钟)
  • 55 -> ss(秒)

有哪位大佬遇到过?