You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter设置时区时提示Asia/Yangon位置不存在该如何解决

问题根因

  • 你使用的timezone包内置的IANA时区数据库版本过低,未收录Asia/Yangon这个时区标识符:缅甸时区历史上曾长期使用Asia/Rangoon作为标准ID,后续才更新为Asia/Yangon,旧版tz数据库未同步该变更
  • flutter_native_timezone返回的是当前操作系统原生层返回的最新时区ID,二者ID不匹配就会抛出找不到对应位置的异常

修复方案

  • 第一步:升级timezone依赖到最新正式版,修改pubspec.yaml中对应依赖的版本号,升级后执行flutter pub get重启项目即可,新版tz数据库已经收录了Asia/Yangon标识
  • 第二步:添加兼容兜底逻辑,避免部分冷门时区/旧设备依然出现匹配失败问题,可直接使用下方修复后的代码:
Future<void> _configureLocalTimeZone() async {
  tz.initializeTimeZones();
  // 时区别名映射表,可按需补充其他存在别名的时区ID
  final Map<String, String> timeZoneAlias = {
    'Asia/Yangon': 'Asia/Rangoon',
    // 可补充其他需要兼容的时区映射
  };
  final String originalTimeZone = await FlutterNativeTimezone.getLocalTimezone();
  String targetTimeZone = timeZoneAlias[originalTimeZone] ?? originalTimeZone;
  try {
    tz.setLocalLocation(tz.getLocation(targetTimeZone));
  } catch (e) {
    // 匹配失败时使用兜底时区,也可根据业务需求调整兜底逻辑
    debugPrint('时区匹配失败,使用兜底时区:$e');
    tz.setLocalLocation(tz.getLocation('Asia/Bangkok'));
  }
}

内容的提问来源于stack exchange,提问作者Neural

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:06:03