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

在Flutter中如何将Unix时间戳转换为ISO 8601格式日期

Flutter 毫秒级Unix时间戳转ISO 8601格式解决方案

错误原因

DateTime.parse() 方法仅支持解析符合ISO 8601规范的日期字符串,无法直接解析Unix时间戳格式的纯数字字符串,这是你收到FormatException报错的核心原因。

解决方法

你收到的1611694800000是毫秒级的Unix时间戳,需要先将字符串转为int类型,再调用DateTime专门的时间戳构造函数处理即可,代码示例如下:

String s = '1611694800000';
debugPrint("接收的日期是: $s");
// 字符串转int类型的毫秒时间戳
int timestamp = int.parse(s);
// 构造UTC时区的DateTime对象,需要本地时区则去掉isUtc参数
DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(timestamp, isUtc: true);
// 直接转标准ISO 8601格式
String isoDate = dateTime.toIso8601String();
debugPrint("转换后的ISO日期: $isoDate");
// 如需将末尾的Z替换为+00:00格式,做简单替换即可
String finalDate = isoDate.replaceFirst('Z', '+00:00');
debugPrint("最终期望格式日期: $finalDate");

运行后输出的finalDate就是你需要的2021-01-26T22:00:00.000+00:00。

补充说明

  • 若你拿到的是秒级Unix时间戳,改用DateTime.fromMicrosecondsSinceEpoch()构造函数即可
  • 原有代码中的切割、拼接、截取逻辑完全多余,toIso8601String()方法可直接输出标准格式,不需要手动处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 12:15:03