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

Jak*_*ake 6 timezone android

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

谢谢.

Dhe*_*.S. 16

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


Ale*_*exS 6

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

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

  2. 你可以使用setTimeZone()AlarmManager改变整个设备的时区。但是您需要“SET_TIME_ZONE”权限。

如果您认为 1. 是危险的并且您没有 2. 的许可,那么您最好的方法是从日历中获取每个日期并通过setTimeZone()在您的日历实例上设置时区。


Luc*_*fer -1

要以编程方式设置时区,您需要使用日期类。请参阅此处的参考文档。

需要使用ClasssetTimeZone()的方法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")); 
Run Code Online (Sandbox Code Playgroud)

  • -1,因为这个答案实际上不是问题的答案,并且因为不可能通过日期类设置时区。 (4认同)
  • 这个答案展示了如何在 SimpleDateFormat 实例而不是系统上设置时区。请参阅 Dheeraj 的回答。 (3认同)