Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何通过应用程序设置时区_Android_Timezone - Fatal编程技术网

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

Android如何通过应用程序设置时区,android,timezone,Android,Timezone,Android提供了一个名为“设置时区”的权限,操作系统权限级别为“危险”。是否有人知道,如果应用程序具有此权限,该应用程序如何设置时区 谢谢。对于时区的编程设置,您需要使用Date类。 见其参考文件 您需要使用SimpleDataFormat类的setTimeZone()方法 以下是根据美国设置时区的示例代码 // First Create Object of Calendar Class Calendar calendar = Calendar.getInstance();

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


谢谢。

对于时区的编程设置,您需要使用Date类。 见其参考文件

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

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

// 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")); 

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

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

  • 您可以使用仅更改当前进程时区的。但正如文档中所指出的,这并不能保证在整个应用程序生命周期中持续

  • 您可以使用更改整个设备的时区。但是你需要“设置时区”——这是允许的


  • 如果你认为1。太危险了,你没有2的许可。您最好的方法是通过获取日历实例中的每个日期并在其上设置时区。

    您认为,如果应用程序没有设置时区权限,代码是否可以工作?@Jake:它必须“工作”。它所做的只是为您的对象设置
    时区。这就像说
    inta=43
    ,操作系统不关心什么。全局设置是您需要的权限,请参阅另一个答案。此答案显示如何在SimpleDataFormat实例而不是系统上设置时区。请参阅Dheeraj的答案。-1因为这个答案实际上不是问题的答案,也因为无法通过Date类设置时区。遗憾的是,第一个解决方案不能保证100%有效。您是否了解在哪些情况下,
    TimeZone.setDefault()
    无效或被覆盖的更多信息?文档仅说明“此值可能随时被清除或覆盖”,但文档未详细说明何时会发生此情况以及原因。@StefanArn抱歉,我没有任何信息。但我怀疑,如果设备配置为通过网络或类似来源(即GPS)设置日期和时区,系统可能会对其进行修改。