昨天客户反应说,在Android 7.1获取台北时区有问题,获取结果显示台北?
给出如下代码:
TimeZone.getDefault().getDisplayName(false, TimeZone.SHORT);
看了之后第一反应是 “不会吧?是不是获取错了”
结果我敲了一遍客人给出的代码
运行一下
在Android 6.0
在Android7.0和7.1
啊这?
继续
在Android11.0
正常?
这
于是查询一堆资料
Android7.0和7.1使用这段代码没问题
运行效果如下:
Android7.0和7.1使用上面没问题,哪Android 6.0怎么办?
继续
一秒复一秒过去了,最后看源码,发现
噢,这个方法是根据ID获取Name如果没有Name才返回时区
完美解决办法如下:
TimeZone tz = TimeZone.getDefault();
String name = tz.getDisplayName(Locale.getDefault());
tz.setID("");
String zone = tz.getDisplayName(false, TimeZone.SHORT);
经测试Android6.0,7.0,7.1,11.0运行效果如下:
Nice
其它Android版本没测试,不过我想应该也没有问题
有问题的小伙伴请留言
欢迎收藏 Felix的Android笔记
持续更新