Flutter/Dart DateTime 解析 UTC 并转换为本地

Dev*_*iel 4 dart

我正在尝试将 UTC 日期字符串DateTime解析为本地时间,然后将其解析为本地时间,但是我在将其转换为本地时间时遇到了麻烦。在英国,它应该是加一,但是当我打印时.isUtc它返回为假。

这就是我现在所拥有的:

print(widget.asset.purchaseDate);
DateTime temp = DateTime.parse(widget.asset.purchaseDate);
print(temp.toLocal());
Run Code Online (Sandbox Code Playgroud)
I/flutter (5434): 2020-05-07 21:29:00
I/flutter (5434): 2020-05-07 21:29:00.000
Run Code Online (Sandbox Code Playgroud)

Ric*_*eap 14

您需要将时区指定为DateTime.parse,否则将假定为当地时间。来自 dartdoc:

一个可选的时区偏移部分,可能与前一个用空格分隔。时区是“z”或“Z”,或者是带符号的两位数小时部分和可选的两位数分钟部分。

由于您知道您的字符串代表 UTC,您可以通过添加Z后缀来告诉解析器。

var temp = DateTime.parse(widget.asset.purchaseDate + 'Z');
print(temp.isUtc); // prints true
Run Code Online (Sandbox Code Playgroud)