我正在开发MK808安卓手机,我需要设置时区和日期。
设置我使用的时区 - > su -c setprop persist.sys.timezone“America / Chicago”
此命令工作正常,但此时不会更改设备时钟本身我需要重启设备。设备重启后,设备时间会按预期更改为CST。
我尝试执行命令“date”来获取当前日期。我的问题是我从该命令获得的日期应该偏移到夏令时还是不需要抵消?
有人可以告诉我一个解决方案,在我更改时区后消除设备重启吗?因此,一旦我更改时区,我的设备时钟就应该更改。
谢谢!
答案 0 :(得分:1)
更改时区不会更改时钟,通常是自1970年1月1日UTC以来的秒数。它只是改变了时间的解释方式。
如果tzset_locked中persist.sys.timezone
环境变量为NULL,则查询TZ
属性。如果您希望该属性生效,请确保没有设置TZ
。
% adb shell
# date
Thu Oct 3 13:33:34 PDT 2013
# TZ=US/Eastern date
Thu Oct 3 16:33:38 EDT 2013
快速查看仿生libc中的代码表示每次调用persist.sys.timezone
时都会检查localtime()
。属性集立即生效:
# date
Thu Oct 3 13:39:42 PDT 2013
# setprop persist.sys.timezone US/Eastern
# date
Thu Oct 3 16:39:51 EDT 2013
但是,这仅适用于本机代码。 Android框架有自己的时区处理(例如,您可以在runtime init期间看到它检查属性)。