从Android上的shell设置日期

从Android上的shell设置日期,android,Android,出于调试目的,我希望在某个日期运行我的应用程序。当然,我可以在我的emulator上手动更改日期,但我想知道是否有一种简单的方法可以从emulator shell上进行更改(我知道不能从UI进行更改)。这在mac上有效: adb shell date $(date -j mmddHHMM +%s) 其中“mmddHHMM”是要设置的月份、日期、小时和分钟 这将使用adb shell在模拟器中调用“date”命令,然后向其传递自epoch开始设置时间的秒数(通过在本地mac上调用“date-j…

出于调试目的,我希望在某个日期运行我的应用程序。当然,我可以在我的emulator上手动更改日期,但我想知道是否有一种简单的方法可以从emulator shell上进行更改(我知道不能从UI进行更改)。

这在mac上有效:

adb shell date $(date -j mmddHHMM +%s)
其中“mmddHHMM”是要设置的月份、日期、小时和分钟

这将使用adb shell在模拟器中调用“date”命令,然后向其传递自epoch开始设置时间的秒数(通过在本地mac上调用“date-j…”计算)


你也可以更具体一些。日期手册页的格式(在mac电脑上)是
[[mm]dd]HH]mm[[cc]yy][.ss]

根据在我的实例(WinXP Android SDK11 HVGA_1.6 emulator)上无法运行的历元后经过的秒数。然而,这种特殊的格式起了作用:

adb shell date -s "yyyymmdd.[[[hh]mm]ss]"

[2011年6月27日编辑:添加了语法的时间部分。]

我正在使用Win7

适合我的正确格式是:

亚洲开发银行外壳日期-s“YYYYMMDD.hhmmss”

我在其他线程中看到了这个命令,真正让我改变的是在settings->Date&Time下以这种方式设置选项。(取消选择自动日期、时间和时区)


与linux不同,只有两种方法可以设置日期。date命令将通过调用设备驱动程序“dev/alarm”来设置时间

  • 日期-s“YYYYMMDD.hhmmss” 或
  • 日期-u“UTC\u时间\u毫秒”
  • 希望能有帮助


    拉维·潘迪特(Ravi Pandit)

    这在Linux下对我有效,也许需要对夏令时进行一些修正:

    adb shell date -s $(date +%Y%m%d.%H%M%S)
    

    以下内容在Mac OS X上工作,以便与计算机的时间精确对齐,并设置秒数

    对于Android 6/7/8模拟器,请使用以下命令:

    对于Android 4/5模拟器,请使用以下命令:

    例如,您可以使用shell脚本检测正在运行的Android OS版本,并适当地运行正确的adb命令:

    #/bin/bash
    android_os_version=$(adb-e shell getprop ro.build.version.sdk)
    #adb函数将返回类似“23\n”的字符串。因此,您必须删除新行
    #字符,否则整数比较(下面)将不起作用。
    #看https://stackoverflow.com/questions/19505227/integer-expression-expected-error-in-shell-script/#48705290
    android_os_version=“${android_os_version/[$'\t\r\n']}”
    echo“仿真器具有android\u os\u版本=$android\u os\u版本”
    如果[“$android_os_版本”-gt 22];然后
    echo“检测到Android 6.0+仿真器。”
    adb-e外壳日期$(日期+%m%d%H%m%Y.%S)
    其他的
    echo“检测到Android 2/4/5仿真器。”
    adb-e外壳日期-s$(日期“+%Y%m%d.%H%m%s”)
    fi
    
    注1:
    -e
    表示“仿真器”,当您同时连接仿真器和设备时,它工作可靠


    注2:根据Siva Kranthi Kumar于2016年6月9日发表的评论,发现了第一个变化。试图使用adb shell date-?中的文档几乎是不可能的。它写得很糟糕,也很难理解。

    要从adb客户端自动填写时间:
    /adb shell date-s“`date+%Y%m%d.%H%m%s`
    看起来Android 6不再使用这种格式,使用的是
    mmddhhmyyyy.ss
    (BusyBox
    date
    也接受)。对于操作系统,使用的是“adb shell date”$(日期+%m%d%H%m%Y)“日期-u\”UTC\u TIME\u MILLI\u SECS\”在Android 4.1.1上对我有效。谢谢,这对我有效:adb shell su根日期-s$(日期+%Y%m%d.%H%m%s)
    adb -e shell date $(date +%m%d%H%M%Y.%S)
    
    adb -e shell date -s $(date "+%Y%m%d.%H%M%S")