如何使用ADB更改时区

21

我希望使用adb shell命令来更改时区。

我查看了一些允许在Linux中更改时区的文章,但是它们在Android上无效。

7个回答

44

似乎在通用的高通设备上无法在Nougat上运行。 getprop 显示值,但是 setprop 没有效果。我猜可能需要 root 权限。 - scorpiodawg
https://dev59.com/E5Tfa4cB1Zd3GeqPTqZ0?rq=1 - scorpiodawg
需要Root权限并进行重启才能在Android设置中生效。 $ADB_CMD shell setprop persist.sys.timezone "America/Los_Angeles" - Meryan

15

adb shell service call alarm 3 s16 America/Phoenix,此命令将立即生效。

setprop with persist.sys.timezone 只有在重启后才能生效。


2
这应该是首选答案 =) - wswebcreation
这应该是被接受的答案,它不需要系统根权限。 - Yeung

2

1
这是最佳答案,因为它立即生效,并为任何正在侦听的人广播Intent.ACTION_TIMEZONE_CHANGED。在我的Android 11系统上,它是“alarm 3 s16 America/Chicago”,因此请找到适用于您的操作系统版本的正确IAlarmManager.aidl文件,并查找setTimeZone()的索引。 - Brent K.

0
在我的(非常)有限的经验中,我能够编辑/system/build.prop文件。我更改了其中的一行,将persist.sys.timezone=America/Sao_Pao或类似的无用信息更改为persist.sys.timezone=America/Chicago,以适应我的时区CDT。我还将persist.sys.language=bt和persist.sys.country=AR这两行更改为persist.sys.language=en和persist.sys.country=US。
在文件中还有其他一些可以调整的内容,这些内容在系统恢复后仍然存在。您可能需要确保闪存映像或目录中的build.prop文件具有正确的行。
/system/property目录似乎保存有几个带有单个值的文本文件。使用setprop后,这些文件似乎会出现,但操作系统似乎没有反映出更改。
通常情况下,编辑这些文件需要root访问权限,可以使用term程序或ADB.exe shell来实现(ADB = Android设备桥接程序,可在Android SDK中获得)。我在浏览S18 MiniPad的固件下载时在JXD.HK上找到了ADB.exe。在files.rar dl中,还有SuperUser.apk以及busybox和su的root版本。
祝你好运!

0

-2

2
我在我的棉花糖设备上没有看到该设置,并且https://developer.android.com/reference/android/provider/Settings.Global.html中也没有相关条目。 - fadden
2
@Alex 我已经尝试过了,但是我在我的设备/模拟器上并没有看到任何变化,时区仍然是我更改之前的那个,你有什么想法出了问题吗? - Igal
我同意@Igal的看法,这并没有做任何事情。 - Droid Chris
2
在“设置”中只有“AUTO_TIME_ZONE”,但它执行另外的操作。实际上,它什么也不做。 - Eugen Pechanec

-3

我更改了2个文件以更改我的时区。

其中一个我不确定是否必要,但它可以保持同步:

  /etc/timezone

你确实需要更改的越多:

  /etc/localtime

http://www.cyberciti.biz/faq/linux-unix-set-tz-environment-variable/,您可以使用tzselect确定所需的时区名称。

我受到http://www.cyberciti.biz/faq/howto-set-date-and-time-timezone-in-freebsd/的启发,并将我的时区文件从/usr/share/zoneinfo/复制到/etc/localtime

/etc/timezone是一个包含时区名称的文本文件。因此,我只需更新它以匹配tzselect提供的值即可。


我相信你错过了原帖中提到的“Android”部分。# cd /etc/timezone cd:无法切换到/etc/timezone目录

cd /etc/localtime

cd:无法切换到/etc/localtime目录
- Someone Somewhere
1
@SomeoneSomewhere,我觉得你需要重新阅读我的帖子。 /etc/timezone是一个文本文件,所以你不能cd进去。 它是一个需要编辑的文件。/etc/localtime也是一个需要编辑的文本文件。 - ben_wing
@SomeoneSomewhere,我也要说这绝对是在我的已经root的Android设备上发生的。因此,你能否编辑这些文件可能取决于你是否已经root了你的设备。 - ben_wing
“/etc/localtime” 真的是一个文本文件吗?我认为它是指向“/usr/share/zoneinfo”中的时区文件的链接。与其编辑“/etc/localtime”,我会尝试将其链接到正确的时区文件。 - Grandswiss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接