如何以编程方式设置Android设备的date/时间

背景

我正在使用三星Galaxy Tab(7“)的Wi-fi版本的一个项目。在一些设备上,我们看到设备上的date/时间重置(不知道为什么)到某个date在过去(如1/1/2000)。

问题(S)

如何以编程方式重置设备date/时间? 如果可能的话,我宁愿使用一些adb shell命令(我的shell脚本是生锈的)。 如果没有shell命令可以实现这一点,是否有办法通过编写和安装一个应用程序来完成这个(看起来像是一个安全违规)?

Solutions Collecting From Web of "如何以编程方式设置Android设备的date/时间"

你可以使用下一个命令:

亚行shelldate-s YYYYMMDD.HHmmss

例:

亚行shelldate-s 20120423.130000

将date设置为Mon Apr 23 13:00:00 CEST 2012Mon Apr 23 13:00:00 CEST 2012 (我的电话在CEST时区)

使用shell的'date'命令。 使用unix纪元时间的参数(即自1970年1月1日以来的秒数),它设置设备的时钟,例如'adb shell date 1318349236'。

您可以通过'adb shell date +%s'获得当前时间戳。 如果你有busybox,date命令更有能力,并且你可以通过'busybox date +%s -d'获得你想要的任意date。“2010-01-01 12:34:56”'

我做了这个perl脚本来处理这个问题:

clock.pl

 use Time::localtime; $_=localtime; system'adb','shell','date -s',sprintf("%04d%02d%02d.%02d%02d%02d",$_->year+1900,$_->mon+1,$_->mday,$_->hour,$_->min,$_->sec) 

使用cmdwindows )或terminalmac )调用它:

 perl < clock.pl 

Android时钟将随着您的机器时间立即更新。

根据您的系统date更改date

更改date与系统相同

 adb shell date -s `date +%G%m%d.%H%M%S` 

将date更改为明天:

 adb shell date -s `date --date='1 day' +%G%m%d.%H%M%S` 

更改date至明天上午12点

 adb shell date -s `date --date='1 day' +%G%m%d.000000` 

将date更改为昨天

  adb shell date -s `date --date='1 day ago' +%G%m%d.%H%M%S` 

将date更改为一周前

 adb shell date -s `date --date='1 week ago' +%G%m%d.%H%M%S` 

我正在使用以下命令来正确格式化date和时间在Windows和设置系统时间在Android上

 set datetimef=%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%date:~-4%.%time:~6,2% adb shell date -d %datetimef% 

这确实设置Android的Unix系统时间,但不会更改硬件时钟。 android gui显示的时间也不受这种影响。

我猜应该使用hwclock命令来更新硬件时钟,但是由于权限错误,这不会执行。