Emulator's clock doesn't match the host sy

2019-03-22 15:03发布

Why doesn't the Android emulator's clock match the host system clock? It's not a time zone difference--it's always off by several minutes.

Is there a way to synchronize them besides manually setting the emulator's time?

5条回答
聊天终结者
2楼-- · 2019-03-22 15:35

As I've got this as top link in google :)

On windows you can get right time by issuing

adb shell date -s %date:~10,4%%date:~4,2%%date:~7,2%.%time:~0,2%%time:~3,2%%time:~6,2%

-s value should be in format: YYYYMMDD.hhmmss

On systems that have different time format, portion with windows shell args will be different!

You can test out in cmd.exe:

> echo %date%
Thu 01/22/2015

To output YYYY part use: %date:[position of char. 0-based],[length]%

On linux:

adb shell date -s $(date +%Y%m%d.%H%M%S)
查看更多
贼婆χ
3楼-- · 2019-03-22 15:36

I believe there is no way to synchronize the time. The default image of the emulator sets to UTC/GMT (+00:00). However you can change it to your own.

Here is an image on how to do so: First un-check the "Automatic Time Zone" (red arrow) then click on the "Selected Time Zone" (green arrow) and finally select your time zone and it should match the one on your system (yellow arrow). timezone screen shots

查看更多
老娘就宠你
4楼-- · 2019-03-22 15:39

If there are some discrepancies between the AVD and host times, mainly after restarting from a snapshot you can use adb shell date to check and/or set the date just after you launched the emulator.

查看更多
The star\"
5楼-- · 2019-03-22 15:55

On Windows, you need to put quote around the datetime string to avoid error when the parsing returns a space in front of a digit.

The complete syntax would be:

adb shell date -s '%date:~10,4%%date:~4,2%%date:~7,2%.%time:~0,2%%time:~3,2%%time:~6,2%'
查看更多
6楼-- · 2019-03-22 15:56

The date command has changed in newer androids since the other answers. You must have root, -s is not recognized and the set format has changed.

I've had luck using adb shell su root date -u @$(date +%s.%N), which uses @ to set it using UNIX timestamp seconds with nanosecond precision. -u is required if you have changed the timezone for some reason, even though timestamps should not have a time zone!

查看更多
登录 后发表回答