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
相关产品推荐
相关产品推荐

