如何在Android中设置自定义TimeZone

时间:2012-08-20 14:39:19

标签: android timezone

在我的应用程序中,我根据用户的TimeZone向用户显示一些信息。 我允许用户选择世界上不同的城市并获得所需的信息。默认情况下,我将使用

从其设备获取用户的TimeZone
                `TimeZone myTZ = TimeZone.getDefault();`

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

当选择另一个TimeZone时,我使用

将TimeZone设置为默认的TimeZone
       `TimeZone.setDefault(TimeZone.getTimeZone("my_timezone"));`

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

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

陷入困境三天。有什么建议可以摆脱这个吗?快速建议将对我有所帮助。在此先感谢!!

1 个答案:

答案 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>