flutter - 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,但它没有这样做。
解决方案
感谢发布此链接后删除答案的人。感谢@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。
推荐阅读
- reactjs - 画布上超长文本的多行拆分(添加换行符)
- excel - Excel 文件大小为 23MB,只有 9 个数据整体和一个 VBA 脚本
- php - 我收到错误 FatalThrowableError 类型错误:传递给 Illuminate\Http\Request::merge() 的参数 1 必须是数组类型,给定 null
- android - 在它上调用方法与在 ?.let body 中引用之间的区别
- javascript - 基于动态传递的属性从对象数组中获取唯一值
- ios - ld:在发布时找不到 -lFirebaseCore 错误的库
- c# - 从 C# WPF 中的视图模型中从组合框 WPF 中选择项目
- kivy - 层如何在 kivy 中工作,了解小部件中的索引
- docker - nginx_phpfpm 容器在 ECS 上作为任务运行时不健康
- java - 使用 for 循环遍历项目列表