在 Flutter 中将 IST 转换为 EST 时不起作用
DateTime myDT = DateTime.now();//Current DateTime
print("current time :- ${myDT}");
//当前时间:- 2022-03-24 17:44:12.158026
DateTime EST = dateTimeToZone(zone: "EST", datetime: myDT);//DateTime in EST zone
print("EST time :- ${EST}");
//EST 时间:- 2022-03-24 07:14:12.158026Z
这是我的代码。现在我在 Google 上查看美国东部时间 (EST) 时区时间是 8:14 。 为什么我得到了差异? 我使用 Instant 0.4.1 插件来完成此操作。
DateTime myDT = DateTime.now();//Current DateTime
print("current time :- ${myDT}");
//current time :- 2022-03-24 17:44:12.158026
DateTime EST = dateTimeToZone(zone: "EST", datetime: myDT);//DateTime in EST zone
print("EST time :- ${EST}");
//EST time :- 2022-03-24 07:14:12.158026Z
this is my code. And right now I check EST zone time on Google it's 8:14 .
Why I m getting difference?
I doing this with instant 0.4.1 plug-in.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通常,我建议不要使用
"EST"
,因为它固定为 UTC-5,而是使用 您所询问时区的 IANA 时区标识符。例如,在美国,东部时区由“America/New_York”
表示。在加拿大,您可以使用“America/Toronto”
。目前,标准时间使用 UTC-5,白天使用 UTC-4。不幸的是,Dart/Flutter
dateTimeToZone
函数不了解 IANA 时区。因此,它没有考虑夏令时或作为时区性质一部分的偏移量的历史变化。相反,它使用缩写到偏移量的固定(且不完整)映射,在 中定义timeZoneOffsets
。要克服此限制,您可以尝试使用
timezone
包,它提供支持 IANA 时区。然后,您可以使用"America/New_York"
表示美国东部时区。Normally, I would just suggest to not use
"EST"
, as it is fixed to UTC-5, but rather to use an IANA time zone identifier for the time zone you are asking about. For example, in the US, the Eastern time zone is represented by"America/New_York"
. In Canada, you would use"America/Toronto"
. These presently use UTC-5 during standard time, and UTC-4 during daylight time.Unfortunately, the Dart/Flutter
dateTimeToZone
function has no awareness of IANA time zones. It thus does not account for daylight saving time or historical changes to offsets that are part of the nature of time zones. Instead, it uses a fixed (and incomplete) mapping of abbreviations to offsets, defined intimeZoneOffsets
.To overcome this limitation, you can try using the
timezone
package, which provides support for IANA time zones. Then you can use"America/New_York"
for the US Eastern time zone.