Android如何通过应用程序设置时区

时间:2012-03-18 02:55:11

标签: android timezone

Android提供了一个名为“SET_TIME_ZONE”的权限,其操作系统权限级别为“危险”。有没有人知道,如果应用程序具有此权限,应用程序如何设置时区?

感谢。

3 个答案:

答案 0 :(得分:16)

如果您的目标是更改系统的默认时区,请使用AlarmManager的setTimeZone()

答案 1 :(得分:4)

您可以通过多种方式设置TimeZone:

  1. 您可以使用TimeZone.setDefault(),它只会更改当前进程的TimeZone。但正如文档中所述,在整个应用程序生命周期中,这并不能保证。

  2. 您可以使用setTimeZone()AlarmManager来更改整个设备的TimeZone。但是你需要“SET_TIME_ZONE” - 许可。

  3. 如果您认为1.是危险的并且您没有2的权限。您最好的方法是从Calendar获取每个日期并通过{{3}在您的日历实例上设置TimeZone }。

答案 2 :(得分:1)

对于时区的设置,您需要使用日期类。 请参阅参考文档here

您需要使用setTimeZone()类的SimpleDateFormat方法。

以下是根据美国设置时区的示例代码

// First Create Object of Calendar Class
Calendar calendar = Calendar.getInstance();        
// Now Set the Date using DateFormat Class
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z"); 
// Finally Set the time zone using SimpleDateFormat Class's setTimeZone() Method
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));