adb修改android系统时间 adb shell date必须要root权限

adb Command

adb root //需要root权限
adb shell setprop persist.sys.timezone GMT //校准时区
adb shell date MMDDhhmmYY.ss set //修改系统时间这里是GMT格林尼治时间,北京时间得转换一下 +8小时
adb shell hwclock -w //同步硬件时间

adb shell date 0201030422.08 set //比如22年2月1日 3时4分8秒

在 MFC 中,北京时间转换GMT格林尼治时间

以下是一个示例代码,展示如何实现这个格式化:


CTime localTime = CTime::GetCurrentTime(); // 获取本地时间
CTimeSpan timeZoneDiff = CTimeSpan(0, -_timezone / 3600, 0, 0); // 计算时区偏差
CTime gmtTime = localTime + timeZoneDiff; // 转换到 GMT 时间


// 格式化为 MMDDhhmmYY
CString strFormattedGMT = gmtTime.Format("%m%d%H%M%y.%S");

// 获取当前的毫秒数
//SYSTEMTIME st;
//GetSystemTime(&st); // GetSystemTime 获取当前的 GMT 时间
//CString strMilliseconds;
//strMilliseconds.Format(".%03d", st.wMilliseconds); // 格式化毫秒数

// 现在 strFormatted 的格式是 MMDDhhmmYY.ss
pipe_system("adb root"); 
pipe_system("adb shell setprop persist.sys.timezone GMT"); 
pipe_system("adb shell date "+ strFormattedGMT +" set");
pipe_system("adb shell hwclock -w"); 

请注意,GetSystemTime 函数获取的是 GMT 时间,所以如果你需要的是本地时间的毫秒数,应该使用 GetLocalTime 函数替换 GetSystemTime。同时,这种方法假定系统时区设置是正确的。如果系统时区设置不正确,计算出的时间可能会有误差。

format

adb修改android系统时间 adb shell date必须要root权限_第1张图片

根据你提供的 adb shell date --help 命令输出,我们可以看到 Android 设备上的 date 命令支持多种格式用于设置和显示当前日期和时间。这个命令的用法和选项包括:

  • -u:使用 UTC 而不是当前时区。
  • -r FILE:使用指定文件的修改时间而不是当前日期。
  • -d DATE:显示指定的 DATE 而不是当前时间(用于转换日期格式)。
  • -D SET_FORMAT:为 SET 或 -d 指定 FORMAT(替代默认格式 MMDDhhmm[[CC]YY][.ss])。
  • +DISPLAY_FORMAT:使用 strftime(3) 语法指定显示格式字符串。

支持的输入格式包括:

  • MMDDhhmm[[CC]YY][.ss]:POSIX 格式。
  • @UNIXTIME[.FRACTION]:自 1970-01-01 午夜以来的秒数。
  • YYYY-MM-DD [hh:mm[:ss]]:ISO 8601 格式。
  • hh:mm[:ss]:今天的 24 小时制时间。

所有输入格式都可以在前面加上 TZ="id" 来单独设置输入时区,否则 $TZ 同时设置输入和输出时区。

使用这些信息,你可以根据需要设置 Android 设备上的日期和时间。例如,要设置时间为 2023 年 12 月 1 日 15:30:00,你可以使用以下命令:

adb shell date 120115302023.00

或者使用 ISO 8601 格式:

adb shell date "2023-12-01 15:30:00"

请注意,这些命令可能需要 root 权限才能在 Android 设备上执行,特别是在更改系统时间的情况下。如果你的设备没有 root,可能无法通过这种方式更改时间。

你可能感兴趣的:(Android复习,adb,android)