
すごく苦労したのでメモ。ネットを調べていると「-s」があったみたいだけど今はなくなったのかな?
とりあえずHelpを見る
ヘルプがすごくわかりにくい。。。
$ adb shell date --help
usage: date [-u] [-r FILE] [-d DATE] [+DISPLAY_FORMAT] [-D SET_FORMAT] [SET]
Set/get the current date/time. With no SET shows the current date.
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.
Also accepts "@UNIXTIME[.FRACTION]" as seconds since midnight Jan 1 1970.
-d Show DATE instead of current time (convert date format)
-D +FORMAT for SET or -d (instead of MMDDhhmm[[CC]YY][.ss])
-r Use modification time of FILE instead of current date
-u Use UTC instead of current timezone
+FORMAT specifies display format string using these escapes:
%% literal % %n newline %t tab
%S seconds (00-60) %M minute (00-59) %m month (01-12)
%H hour (0-23) %I hour (01-12) %p AM/PM
%y short year (00-99) %Y year %C century
%a short weekday name %A weekday name %u day of week (1-7, 1=mon)
%b short month name %B month name %Z timezone name
%j day of year (001-366) %d day of month (01-31) %e day of month ( 1-31)
%s seconds past the Epoch
%U Week of year (0-53 start sunday) %W Week of year (0-53 start monday)
%V Week of year (1-53 start monday, week < 4 days not part of this year)
%D = "%m/%d/%y" %r = "%I : %M : %S %p" %T = "%H:%M:%S" %h = "%b"
%x locale date %X locale time %c locale date/time
-Dを使うっぽいけどうまくいかない。
$ adb shell date -D “%Y%m%d%H%M” 197805081122 SET
date: bad date '197805081122'; Mon ? 78 05:08:00 JST 1122 != Sun Sep 16 05:08:00 LMT 1123
正解はこれだった(Android 8.x Emulatorでテストした)。
$ adb root
restarting adbd as root
$ adb shell date 050811221978.00
Mon May 8 11:22:00 JST 1978
今日の日付にするならこれ。
$ adb shell "date `date +%m%d%H%M%Y.%S`"