首页 > 解决方案 > DateTimes.toUtc() 没有按预期工作

问题描述

void main() {
  var foo = DateTime(2000).toUtc();
  var bar = DateTime.utc(2000);
  
  assert (foo != bar);
}

foo应该是平等的,bar但他们不是,谁能告诉我我做错了什么toUtc()。据我所知,DateTime(2000)返回DateTime本地时区并将toUtc()其转换为 UTC,但它没有这样做。

标签: flutterdart

解决方案


感谢发布此链接后删除答案的人。感谢@lrn 的回答:

DateTime(y, m, d).toUtc() 在本地时区查找 ymd 时间,然后在同一时间点创建一个 UTC 日期。所以,如果我在 UTC+2 时区,并且我执行 DateTime(2019, 04, 02).toUtc(),我会从当地时间 2019-04-02T00:00:00+02:00 开始,然后发现对应的UTC-time是2019-04-01T22:00:00Z。那是不同时区的同一时间点,它回答了“本地时间是 2019-04-02T00:00:00 时,UTC 时区的时间是多少”的问题。

当您执行 DateTime.utc(2019, 04, 02) 时,您将获得 UTC 时钟显示 2019-04-02T00:00:00Z 的时间点。如果我对此执行 toLocal(),我会得到当地时间 2019-04-02T02:00:00+02:00。


推荐阅读