• Android 使用date set命令修改系统时间


    测试环境:android 7.1.1   

    在adb shell中试图使用 date -s "yyyymmdd.[[[hh]mm]ss]"修改系统系统时间时,会提示 date: Unknown option s

    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
    
    date: Unknown option s
    

    根据提示,使用以下命令

    命令格式:date MMddHHmmyyyy.ss set
    (月日时分年.秒)
    例如:date 052514192019.22 set

    date只是修改了系统时间,还应该把系统时间同步硬件时钟,否则系统重启后,时间是不会保存的

    系统时间同步硬件时钟,可以用命令

    busybox hwclock -w

    busybox 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)
    

      常用的是

    busybox hwclock -w  --从系统时间设置到硬件时钟
    busybox hwclock -s  --从硬件时钟设置到系统时间

    Android代码(Android系统需要能获取root权限)

        /**
         * 执行Android命令
         * @param cmd  命令
         */
        private static void execSuCmd(String cmd) {
            Process process = null;
            DataOutputStream os = null;
            DataInputStream is = null;
            try {
                process = Runtime.getRuntime().exec("su");
                os = new DataOutputStream(process.getOutputStream());
                os.writeBytes(cmd + "
    ");          
                os.writeBytes("exit
    ");
                os.flush();
                int aa = process.waitFor();
                is = new DataInputStream(process.getInputStream());
                byte[] buffer = new byte[is.available()];
                is.read(buffer);
                String out = new String(buffer);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (os != null) {
                        os.close();
                    }
                    if (is != null) {
                        is.close();
                    }
                    if (process != null){
                        process.destroy();
                    }
    
                } catch (Exception e) {
                }
            }
        }

    调用示例

    String curr_time = “052514412019.52”;
    execSuCmd("date " + curr_time
                        + "
     busybox hwclock -w
    ");

    参考:https://blog.csdn.net/q1075355798/article/details/84660423

  • 相关阅读:
    Requested additional data downloads after package installation, but the data could not be downloaded or could not be processed.(Linux Wine)
    ROS中message的相关知识点
    Vim批量注释
    ORACLE用SYS登录报ORA28009:connection as SYS should be as SYSDBA OR SYSOPER解决方法【转】
    Degrees of Freedom
    dos 下运行php
    php连接sql2000
    记事本编辑C#
    多表查询应用于Datatable
    vc读取INI文件
  • 原文地址:https://www.cnblogs.com/tc310/p/10922464.html
Copyright © 2020-2023  润新知