Android提供了一个名为“SET_TIME_ZONE”的权限,其操作系统权限级别为“危险”。有没有人知道,如果应用程序具有此权限,应用程序如何设置时区?
感谢。
答案 0 :(得分:16)
如果您的目标是更改系统的默认时区,请使用AlarmManager的setTimeZone()。
答案 1 :(得分:4)
您可以通过多种方式设置TimeZone:
您可以使用TimeZone.setDefault(),它只会更改当前进程的TimeZone。但正如文档中所述,在整个应用程序生命周期中,这并不能保证。
您可以使用setTimeZone()的AlarmManager来更改整个设备的TimeZone。但是你需要“SET_TIME_ZONE” - 许可。
如果您认为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"));