1

我正在 MK808 安卓棒上开发,我需要设置时区和日期。

为了设置我使用的时区 -> su -c setprop persist.sys.timezone "America/Chicago"

此命令工作正常,但它本身不会更改设备时钟,我需要重新启动设备。设备重新启动后,设备时间按预期更改为 CST。

我尝试执行命令“date”来获取当前日期。我的问题是我从该命令获得的日期应该偏移到夏令时还是不需要偏移?

有人可以告诉我更改时区后消除设备重启的解决方案吗?因此,一旦我更改时区,我的设备时钟就应该更改。

谢谢!

4

1 回答 1

3

更改时区不会更改时钟,时钟通常是自 1970 年 1 月 1 日 UTC 以来的秒数。它只是改变了时间的解释方式。

persist.sys.timezone如果tzset_lockedTZ中的环境变量为 NULL,则查询该属性。如果您希望该属性生效,请确保您没有设置。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 框架有自己的时区处理(例如,您可以看到它在运行时 init期间检查属性)。

于 2013-10-03T20:42:28.403 回答