指点成金-最美分享吧

登录

android 命令修改时间或程序修改系统时间

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了android 命令修改时间或程序修改系统时间相关的知识,希望对你有一定的参考价值。

adb shell  进入shell 终端界面

1、先设置系统的时区配置

cat /data/property/persist.sys.timezone //查看当前时区配置文件
setprop persist.sys.timezone GMT        //
修改属性 
2、开始设置修改当前系统时间

date -s "yyyymmdd.[[[hh]mm]ss]"  System/bin/date -s "yyyymmdd.[[[hh]mm]ss]"

3、查看是否生效

date 

二、用代码实现修改android 系统时间的方法

public void testDate()
try
Process process = Runtime.getRuntime().exec("su");
String datetime="20131023.112800"; //
测试的设置的时间【时间格式 yyyyMMdd.HHmmss
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();
catch (IOException e)
e.printStackTrace();

 

android默认系统日期、时间、时区更改

 

    android平台,经常会遇到产品需要更改系统默认时区日期时间的问题。android更改时区相对比较容易实现,网上也有很多资料,直接设置一个属性即可,例如设置上海东八区,persist.sys.timezone=Asia/Shanghai。但是如何实现更改默认系统时间呢?

      android中,Linux内核中、rtc时钟,默认的起始日期都是197011日,那么如何把默认日期指到2012-01-01呢?笔者在实践中发现,在RTC驱动中可以很容易实现。在RTC驱动加载的时候,一般都有个probe函数需要先执行,因此在probe函数里下手最直接有效。RTC1970-01-01开始,那当然很容易把默认值设置到2012-01-01,所需要设置的seconds也就是从1970-01-01所差的秒数,以秒为单位。因此,一旦读出来的RTC值小于我们预想的值比如2012-01-011325402913)小,我们就把它设置到这个时间点。

[cpp] view plaincopy

1.  seconds = rtc_read_time();  

2.  printk("init PMU/RTC time to  %ld \n", seconds);  

3.    

4.  if(seconds <= 1325402913)   

5.      seconds = 1325402913;/*2012-01-01*/  

6.      ret = rtc_set_time(seconds);  

7.      RTC_DBG("Init Set time: %ld, ret =0x%x\n", seconds, ret);  

8.    


 
笔者通过结果显示,在android平台上是可行的。要设置到哪天几点几分,只要算好具体1970-01-01 0000差的秒数即可,简单明了。这样客户、用户使用起来更方便一些。


以上是关于android 命令修改时间或程序修改系统时间的主要内容,如果未能解决你的问题,请参考以下文章