【发布时间】:2013-10-30 02:03:54
【问题描述】:
我正在尝试使用 ADB shell 设置日期/时间,但 shell 只返回当前时间。
我试过了:
adb shell date -s YYYYMMDD.HHmmss
和unix时间一样:
adb shell date 1318349236
有什么想法吗?
【问题讨论】:
-
第一个应该可以。你能写下你已经发送到设备的实际命令(替换了 YYYYMMDD.HHmmss 值)吗?
我正在尝试使用 ADB shell 设置日期/时间,但 shell 只返回当前时间。
我试过了:
adb shell date -s YYYYMMDD.HHmmss
和unix时间一样:
adb shell date 1318349236
有什么想法吗?
【问题讨论】:
为了节省存储空间,Android 像许多其他嵌入式系统一样使用multi-call binaries 来实现其基本的命令行工具,例如date。
Android 设备可能包含 toolbox 或 toybox(或两者)二进制文件,具体取决于版本。您可以通过运行toolbox date 和toybox date 命令来检查您的设备上可用的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"
【讨论】:
root
adb shell "su 0 toybox date $(date +%m%d%H%M%Y.%S)" 适合我
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'
【讨论】:
date 081812242017.40 并具有 root 权限的 Android Things devpreview 4.1,否则错误提示 date: cannot set date: Operation not permitted Fri Aug 18 12:24:10 GMT 2017
如果你想改变它,你必须输入日期值。
-s 更改 SET 格式。默认 SET 格式为MMDDhhmm[[CC]YY][.ss]。
我成功测试了以下命令:
adb root
adb shell "date `date +%m%d%H%M%Y.%S`"
【讨论】:
alias adb-set-time='adb shell su 0 "date `date +%m%d%H%M%Y.%S`"'
function adb-set-time { adb $@ shell su 0 "date `date +%m%d%H%M%Y.%S`"; }。用法:adb-set-time 或 adb-set-time -e 等
adb shell date -s `date +%G%m%d.%H%M%S`
首先它会获取您机器的当前日期并将其设置在 android 目标上。 这种方法应该适用于 Linux/Mac/Cygwin。
【讨论】:
adb shell date -s "date +'%G%m%d %H:%M:%S'"
为了在我的 Xperia S 上进行这项工作,我必须按如下方式中断命令:
> adb shell
# su -
# date /* see current date */
# date -s YYYYmmdd
动机:我的设备已经恢复到 Linux 时间的开始,我并不特别担心时间,我只想设置正确的日期——顺便说一句,我无法通过系统设置来完成,因为我的自定义 MIUI ROM 不断崩溃...
【讨论】:
在像 RTAndroid 这样的一些设备上也许它也可以工作:
adb shell "su 0 date `date +%m%d%H%M%Y.%S`"
【讨论】:
我对 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'
这个命令不起作用,最初,为了工作,它本身不起作用。
我使用了这 3 个步骤,它对我有用。
首先,adb shell settings put global auto_time 1
(开启自动日期和时间)
第二,adb shell date '0739010002017.00'
(设置你想要的时间)
第三,adb shell settings put global auto_time 0
(关闭自动日期和时间)
注意:对于我的具体项目,我不能依赖 网络提供和 GPS 提供的时间。这就是为什么我有第三个 命令。这会关闭该功能。
【讨论】:
对于 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:55AM
adb shell date 102902012020.55
如果你不懂日期格式,看看这个:
MM = 10
DD = 29
hh = 02
mm = 01
[[CC]YY] = 2020 (or can be 20)
[.ss] = 55
*年和秒是可选的。
【讨论】:
扩展@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 上测试。
【讨论】:
使用当前日期的其他答案出现以下错误:
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(月份)时,它工作得很好)。
解决这个问题的方法是像这样指定-u 选项:
# toybox date -u 041009502020.23
Fri Apr 10 09:50:23 UTC 2020
根据您的时区,这会将时间设置为稍有偏差的值,但在您运行该命令后,您可以使用date 命令查看您休息了多少小时,并在设定的日期简单地说明这一点命令!
【讨论】:
对我有用的正确格式是yyyyMMddHHmm.ss
【讨论】: