我正在尝试使用ADB shell设置日期/时间,但shell只返回当前时间。
我试过了:
adb shell date -s YYYYMMDD.HHmmss
和unix时间如:
adb shell date 1318349236
任何想法?
答案 0 :(得分:36)
为节省存储空间Android与许多其他嵌入式系统一样,使用multi-call binaries来实现其基本命令行工具,如date
。
Android设备可能包含toolbox
或toybox
(或两者)二进制文件,具体取决于版本。您可以通过运行date
和toolbox date
命令来检查设备上可用的toybox date
工具的实现。然后你可以使用打印出当前日期的那个。例如,对于Android 6.0+设备,它可能如下所示:
$ adb shell toybox date
Mon Jul 31 21:09:28 CDT 2017
$ adb shell toolbox date
date: no such tool
使用toolbox date
使用YYYYMMDD.HHmmss
格式设置日期和时间:
adb shell "su 0 toolbox date -s 20161231.235959"
如果toybox date
使用MMDDhhmm[[CC]YY][.ss]
格式:
adb shell "su 0 toybox date 123123592016.59"
答案 1 :(得分:27)
Android 6.0有一种新的日期格式:
Default SET format is "MMDDhhmm[[CC]YY][.ss]", that's (2 digits each) month, day, hour (0-23), and minute. Optionally century, year, and second.
使用-s
设置不再有效。这是更新的set命令:
更新命令的示例:
(在adb shell中)
date 060910002016.00
将导致:
Thu Jun 9 10:00:00 GMT 2016
注意: 该命令不会立即在设备上显示,因为它不会触发任何时间更改广播,但它会在一分钟内显示
要解决此问题,您可以通过以下方式手动附加此广播:
date 060910002016.00 ; am broadcast -a android.intent.action.TIME_SET
使用adb
命令调用此方法:
adb shell 'date 060910002016.00 ; am broadcast -a android.intent.action.TIME_SET'
答案 2 :(得分:14)
adb shell date -s `date +%G%m%d.%H%M%S`
首先,它获取您机器的当前日期并将其设置在Android目标上。 这种方法适用于Linux / Mac / Cygwin。
答案 3 :(得分:13)
如果要更改日期值,则必须输入日期值。 “-s”更改SET格式。默认SET格式为“MMDDhhmm [[CC] YY] [.ss]”。
我成功测试了以下命令:
adb root
adb shell "date `date +%m%d%H%M%Y.%S`"
答案 4 :(得分:2)
要在 Xperia S 上完成此工作,我必须按如下方式中断命令:
> adb shell
# su -
# date /* see current date */
# date -s YYYYmmdd
动机:我的设备已经恢复到Linux时代的开始,我并不特别担心时间,我只想设置正确的日期 - 顺便说一句,我不能做到这一点系统设置,因为我的自定义MIUI ROM一直崩溃......
答案 5 :(得分:2)
在某些设备上,例如 RTAndroid ,它也可能有效:
adb shell "su 0 date `date +%m%d%H%M%Y.%S`"
答案 6 :(得分:1)
扩展@ uval的答案,您可以使用以下内容根据Windows机器上的时间更新Android设备上的日期和时间:
set dateYYYY=%date:~10,4%
set dateMM=%date:~4,2%
set dateDD=%date:~7,2%
set timeHH=%time:~0,2%
set timeMM=%time:~3,2%
set timeSS=%time:~6,2%
adb shell su -c date %dateMM%%dateDD%%timeHH%%timeMM%%dateYYYY%.%timeSS%
adb shell su -c am broadcast -a android.intent.action.TIME_SET
在有根的Android 6.0设备和Windows 10 PC上测试。
答案 7 :(得分:0)
对我有用的正确格式是yyyyMMddHHmm.ss
答案 8 :(得分:0)
我在Android 5上没有任何问题,我在命令中没有su的情况下发现了大多数答案。
Android 6是引起我注意的一款。
在Android 6上,它没有给我错误,只是没有正确设置它,它会将其设置回命令之前的状态。我尝试https://stackoverflow.com/a/43481982/3922705时也遇到了/system/bin/sh: su: not found errors
还有这个https://stackoverflow.com/a/19497572/3922705
在所有的尝试和错误讨论之后,我弄清楚了。
这是我使用MMDDhhmm [[CC] YY] [。ss]的日期格式
adb shell date '0739010002017.00'
此命令不起作用,最初,为了起作用,它本身不起作用。
我使用了这三个步骤,对我有用。
首先,adb shell settings put global auto_time 1
(打开自动日期和时间)
第二,adb shell date '0739010002017.00'
(设置您想要的时间)
第三,adb shell settings put global auto_time 0
(关闭自动日期和时间)
注意:对于我的特定项目,我不能依靠 网络提供的时间和GPS提供的时间。这就是为什么我有第三个 命令。会关闭该功能。
答案 9 :(得分:0)
使用当前日期的其他答案,我得到以下错误:
date: bad date '041009502020.23'; Fri Apr 10 09:50:23 CET 2020 != Fri Apr 10 10:50:23 CEST 2020
使用命令也接受的格式@%s
(%s
是UNIX时间戳):
date: bad date '041009532020.32'; Sun Apr 10 09:53:32 CET 2020 != Fri Apr 10 10:53:32 CEST 2020
事实证明,这与时区有关,特别是似乎与夏令时有关(因为当我将04
替换为03
(月份)时,它就可以正常工作了。) / p>
此问题的解决方案是像这样指定-u
选项:
# toybox date -u 041009502020.23
Fri Apr 10 09:50:23 UTC 2020
根据您的时区,这会将时间设置为稍微偏离的值,但是运行该命令后,您可以使用date
命令检查您要离开多少小时,并在设置日期命令!
答案 10 :(得分:0)
对于Android 6+,要在模拟器上更改DateTime:
第1步
adb root
第2步
adb shell date MMDDhhmm[[CC]YY][.ss]
例如将日期设置为Oct [10] 29 02:01:55 2020-只需将10/29/2020 02:01:55 AM
adb shell date 102902012020.55
如果您不了解日期格式,只需查看以下内容即可:
MM = 10
DD = 29
hh = 02
mm = 01
[[CC]YY] = 2020 (or can be 20)
[.ss] = 55
*“年”和“秒”是可选的。