在我的应用程序中,我根据用户的TimeZone
向用户显示一些信息。
我允许用户选择世界上不同的城市并获得所需的信息。默认情况下,我将使用
`TimeZone myTZ = TimeZone.getDefault();`
一旦用户更改了TimeZone,我就会将其保存在首选项中。存储和检索首选项中的值没有问题。
当选择另一个TimeZone
时,我使用
`TimeZone.setDefault(TimeZone.getTimeZone("my_timezone"));`
当我在日志中打印TimeZone
时,我设置了TimeZone
值。但是当我在计算中使用TimeZone
时,我获得了之前的TimeZone
值。
所以我认为问题是TimeZone没有改变,我希望用户将选定的TimeZone设置为他们设备中的默认TimeZone。我该怎么做我在做什么错误?
陷入困境三天。有什么建议可以摆脱这个吗?快速建议将对我有所帮助。在此先感谢!!
答案 0 :(得分:1)
根据TimeZone.setDefault(...)
-
仅覆盖当前进程的默认时区。
警告:避免使用此方法在您的帐户中使用自定义时区 处理。可以随时清除或覆盖此值 会导致意外行为。而是手动提供自定义时间 区域视需要。
显然,要通过代码更改时区,您必须使用AlarmManager。请参阅讨论here。
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setTimeZone(timezone);
它需要在清单
中设置此权限<uses-permission android:name="android.permission.SET_TIME_ZONE"></uses-permission>