在 Flutter 中将 IST 转换为 EST 时不起作用

发布于 2025-01-16 20:30:37 字数 435 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清秋悲枫 2025-01-23 20:30:37

通常,我建议不要使用 "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 in timeZoneOffsets.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文