我正在使用 https://github.com/MaikuB/flutter_local_notifications 并尝试添加
zonedShedule
-通知。为此,我需要TZDateTime。问题是它总是重新调整 UTC 时间...但我实际上需要 ESCT。
要获取当前时间,我正在使用这条线:
final tz.TZDateTime now = tz.TZDateTime.now(tz.local);
我找不到任何东西来将 TZDateTime 转换为当前当地时间...我很高兴得到每一个帮助! 如果您需要更多信息,请告诉我。
我也遇到了同样的问题。
初始化插件时,也初始化时区。
tz.initializeTimeZones();
final String timeZone = await FlutterNativeTimezone.getLocalTimezone();
tz.setLocalLocation(tz.getLocation(timeZone));
安装包 flutter_native_timezone 以获取您当地的时区。然后它应该可以工作。
不幸的是,
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 循环并进入了适当的时区。也许有一天,时区可以解决这个问题或开发一种内部解决方法。在那之前,这个技巧对我有用。