Flutter TZDateTime 返回当前时间

问题描述 投票:0回答:2

我正在使用 https://github.com/MaikuB/flutter_local_notifications 并尝试添加

zonedShedule
-通知。为此,我需要TZDateTime。问题是它总是重新调整 UTC 时间...但我实际上需要 ESCT

要获取当前时间,我正在使用这条线:

final tz.TZDateTime now = tz.TZDateTime.now(tz.local);

我找不到任何东西来将 TZDateTime 转换为当前当地时间...我很高兴得到每一个帮助! 如果您需要更多信息,请告诉我。

flutter datetime dart timezone flutter-local-notification
2个回答
1
投票

我也遇到了同样的问题。

初始化插件时,也初始化时区。

tz.initializeTimeZones();
final String timeZone = await FlutterNativeTimezone.getLocalTimezone();
tz.setLocalLocation(tz.getLocation(timeZone));

安装包 flutter_native_timezone 以获取您当地的时区。然后它应该可以工作。


0
投票

不幸的是,

flutter_native_timezone
不再被维护,所以这里有一个更新的解决方案:

首先,添加主动维护的分叉

flutter_timezone

flutter pub add flutter_timezone

然后拉取设备时区获取位置即可再次获取正确时区:

// Fetch device local time zone
String currentTimeZone = await FlutterTimezone.getLocalTimezone()

// Initialize timezone with device's time zone
tz.initializeTimeZones();
final location = tz.getLocation(currentTimeZone);

// Get the current DateTime object in the local time zone
final now = tz.TZDateTime.now(location)

这让我脱离了 UTC 循环并进入了适当的时区。也许有一天,时区可以解决这个问题或开发一种内部解决方法。在那之前,这个技巧对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.