Android设置系统时间问题
背景及问题
- Platform: RK3399
- OS: Android7.1.2
- Kernel: v4.4.103
在新的产品开发中,需要设置系统时间。发现使用老产品中的那一套报错,无法用date命令去设置,使用的代码及报错如下:
String.format("date -s %04d%02d%02d.%02d%02d%02d", year, month, day, hour, min, sec);
date: Unknown option s
解决及扩展
后面发现在Android shell里面的
date
命令没有-s
选项。使用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
在Android shell设置系统时间需使用如下命令(需要root权限):
#格式为date MMddHHmmyyyy.ss set date 123012002018.59 set
如需使用UTC时间,则需要加上
-u
选项如果需要同步更新到硬件RTC中,则还需要使用
hwclock
usage: hwclock [-rswtluf] -f FILE Use specified device file instead of /dev/rtc (--rtc) -l Hardware clock uses localtime (--localtime) -r Show hardware clock time (--show) -s Set system time from hardware clock (--hctosys) -t Set the system time based on the current timezone (--systz) -u Hardware clock uses UTC (--utc) -w Set hardware clock from system time (--systohc)
常用的是:
hwclock -w
–从系统时间设置到硬件时钟hwclock -s
–从硬件时钟设置到系统时间
评论