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

Flutter中DateFormat解析12:30自动转为00:30的问题求助

问题解决:Flutter DateFormat解析12:30时自动转为00:30的问题

问题出在你使用的日期格式符上:

  • 你写的hh:mm是12小时制的格式规则,在12小时制逻辑里,无AM/PM标记时12默认对应午夜的0点,所以会被解析成00:30。
  • 而11、13、14这类数值能正常解析,是intl包的兼容逻辑,但这并非规范用法。

解决方案

把格式字符串中的hh替换为HH——HH是24小时制的小时格式符,专门用来解析00-23范围内的小时数,能正确保留12:30的原始时间。

修改后的完整代码:

import 'package:intl/intl.dart';

void main() {
  String date = "31-01-2023";
  String hour = "12:30";
  
  String completeData = "${date} ${hour}";
  DateTime tempDate = DateFormat("dd-MM-yyyy HH:mm").parse(completeData);
  print("Formatting date: ${tempDate}");
}

运行后输出为:2023-01-31 12:30:00.000,完全符合预期。另外你代码里的tempHour变量未被使用,可以直接删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:10:25