2

在我的应用程序中,我根据用户的TimeZone. 我允许用户选择世界上不同的城市并获取所需的信息。默认情况下,我将从他们的设备获取用户的时区,使用

                `TimeZone myTZ = TimeZone.getDefault();`

一旦用户更改 TimeZone ,我会将其保存在首选项中。从首选项中存储和检索值没有问题。

选择另一个时TimeZone,我将该时区设置为默认时区

       `TimeZone.setDefault(TimeZone.getTimeZone("my_timezone"));`

当我TimeZone在日志中打印时,我得到了TimeZone我设置的值。但是当我TimeZone在计算中使用它时,我得到了以前的TimeZone值。

所以我认为问题是 TimeZone 没有改变,我希望用户将选定的 TimeZone 设置为他们设备中的默认 TimeZone。我该怎么做。我在做什么错误?

被困在这三天。有什么建议可以摆脱这种情况吗?快速建议对我有很大帮助。提前致谢!!

4

1 回答 1

1

根据文档TimeZone.setDefault(...)-

仅覆盖当前进程的默认时区。

警告:避免使用此方法在您的流程中使用自定义时区。该值可能随时被清除或覆盖,这可能会导致意外行为。相反,根据需要手动提供自定义时区。

显然要通过代码更改时区,您必须使用 AlarmManager。请参阅此处的讨论。

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setTimeZone(timezone);

它需要在清单中设置此权限

<uses-permission  android:name="android.permission.SET_TIME_ZONE"></uses-permission>
于 2012-08-20T15:04:53.317 回答