2013-10-03 61 views
0

我正在開發MK808 android stick,我需要設置時區和日期。Android終端命令獲取當前日期

對於設置我用的時區 - >蘇-c setprop persist.sys.timezone「美國/芝加哥」

此命令工作正常,但它不會在那個時候改變器件時鐘本身我需要重啓我的設備。設備重新啓動後,設備時間按預期更改爲CST。

我試着執行命令「date」來獲取當前日期。我的問題是,我從該命令得到的日期應該抵消夏時制還是不需要抵消?

有人可以告訴我一個解決方案,以消除設備重新啓動後,我改變了時區?因此,一旦更改時區,我的設備時鐘就應該更改。

謝謝!

回答

1

更改時區不會更改時鐘,通常時間爲UTC自1970年1月1日以來的秒數。它只是改變了時間的解釋。

如果TZ環境變量在tzset_locked中爲NULL,則會諮詢persist.sys.timezone屬性。如果您希望該屬性生效,請確保您沒有設置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期間查看它的屬性)。