Flutter timezone包中tz.local无法获取准确本地时区时间怎么办?
Flutter timezone 包本地时间存在两小时误差的解决方法
你的问题是因为tz.local未正确识别实际时区,或是时区数据未匹配当前时区规则,导致输出时间偏差。以下是具体解决步骤:
手动指定目标时区
初始化时区数据后,不要依赖tz.local,而是通过时区ID明确指定本地时区:import 'package:timezone/data/latest.dart' as tz; import 'package:timezone/timezone.dart' as tz; void getLocalTime() { tz.initializeTimeZones(); // 替换为你对应的时区ID,比如"Asia/Shanghai" final targetLocation = tz.getLocation('Asia/Shanghai'); print(tz.TZDateTime.now(targetLocation)); }查找正确的时区ID
若不清楚自己的时区ID,可先打印所有可用时区列表,从中匹配:tz.initializeTimeZones(); print(tz.timeZoneDatabase.locations.keys);更新时区包版本
确保timezone包为最新版本,旧版本可能存在时区数据过期问题,在pubspec.yaml中更新依赖后执行flutter pub get。
内容的提问来源于stack exchange,提问作者Osama El Emam
相关产品推荐
相关产品推荐

