You need to enable JavaScript to run this app. Flutter Dart如何将时间戳1624275605667转换为带GMT时区的指定日期格式
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Dart如何将时间戳1624275605667转换为带GMT时区的指定日期格式

问题原因排查

你运行代码报错的核心原因不是DateFormat参数错误,而是DateTime构造方法用错了:
Dart 中直接调用DateTime(int)单参数构造函数时,入参代表的是年份,不是时间戳。你传入的13位毫秒级时间戳数值远超合法年份范围,所以会抛出异常。

正确的时间戳转DateTime写法:

// 13位毫秒时间戳转DateTime
final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(1624275605667);
// 如果是10位秒级时间戳,用这个方法
// final DateTime dateTime = DateTime.fromSecondsSinceEpoch(1624275605);

DateFormat格式参数说明

你需要输出的Mon Jun 21 2021 17:10:05 GMT+05:30格式,对应的DateFormat参数就是你写的'EEE MMM d yyyy HH:mm:ss zzz',但需要额外注意两个适配点:

  • 要保证输出英文的星期、月份缩写,需要显式指定英文本地化参数'en_US',避免系统语言为中文时输出中文的周、月标识
  • zzz格式符就是用来输出GMT±时区偏移的格式,完全匹配你的需求

完整可运行代码示例

import 'package:intl/intl.dart';

void main() {
  var timestamp = 1624275605667;
  final DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(timestamp);
  // 传入locale参数保证输出英文标识
  final DateFormat formatter = DateFormat('EEE MMM d yyyy HH:mm:ss zzz', 'en_US');
  final String result = formatter.format(dateTime);
  print(result); // 输出:Mon Jun 21 2021 17:10:05 GMT+05:30
}

格式符对应含义

  • EEE:星期的英文缩写(如Mon、Tue)
  • MMM:月份的英文缩写(如Jan、Jun)
  • d:日期(无前导零,如1、21)
  • yyyy:4位年份
  • HH:mm:ss:24小时制的时、分、秒
  • zzz:时区标识,格式为GMT±偏移量(如GMT+05:30)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:27:02