andriod 時間和時區

1。 自動同步服務器

能夠使用.net

SntpClient

類獲取校時服務器時間code

參考:orm

http://blog.csdn.net/huang_cai_yuan/article/details/51689907blog

設置時間:get

方法1:調用android的SystemClock.setCurrentTimeMillis方法,須要系統權限同步

方法2:獲取root權限,而後經過調用linux date命令設置時間:it

Date current = new Date(time);
                SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd.HHmmss");
                String datetime = df.format(current);
                Process process = Runtime.getRuntime().exec("su");
                DataOutputStream os = new DataOutputStream(process.getOutputStream());
                //os.writeBytes("setprop persist.sys.timezone GMT\n");
                os.writeBytes("/system/bin/date -s " + datetime + "\n");
                os.writeBytes("clock -w\n");
                os.writeBytes("exit\n");
                os.flush();

 

這裏有一個奇怪的問題,date命令設置時間會根據當前時區自動設置當前系統的utc時間,問題在於date命令的時區和app中獲取的時區值不同,關鍵是不知道如何修改date命令的時區form

date + "%Z %z"顯示當前系統的時區是-8配置

但在app中TimeZone.getDefault獲取當前的時區是+8

 

補充:

這裏若是使用AlarmManager setTimeZone("GMT+08:00")設置時區,則安卓的時區和linux系統的時區是相反的,即便用

  1. cat /data/property/persist.sys.timezone //查看當前時區配置文件  
  2. setprop persist.sys.timezone GMT   

顯示的是gmt+8

可是data命令查詢時區顯示是gmt-8

若是使用settimezone("asia/shanghai") 則無此問題。

緣由不明

相關文章
相關標籤/搜索