Dart中转换可空int类型时间戳得到错误日期的问题
问题原因及解决方案
你的问题出在时间戳单位不匹配:
- 你手里的
1657948481451是毫秒级时间戳 - 但你调用的
DateTime.fromMicrosecondsSinceEpoch方法,要求传入的是微秒级时间戳(1微秒=1/1000毫秒)
两者差了1000倍,所以计算出来的日期才会偏移到1970年的早期时间。
两种修复方法:
- 直接使用毫秒级转换方法(推荐):
var date = DateTime.fromMillisecondsSinceEpoch(completedTimestamp!, isUtc: true);
- 将毫秒时间戳转为微秒再传入:
var date = DateTime.fromMicrosecondsSinceEpoch(completedTimestamp! * 1000, isUtc: true);
执行任意一种方法后,得到的UTC日期都会是你预期的2022-07-16 05:14:41。
内容的提问来源于stack exchange,提问作者user979331
相关产品推荐
相关产品推荐

