web-dev-qa-db-ja.com

エミュレータのクロックがホストシステムのクロックと一致しない

Androidエミュレータのクロックがホストシステムのクロックと一致しないのはなぜですか?タイムゾーンの違いではありません-それは常に数分ずれています。

エミュレータの時間を手動で設定する以外にそれらを同期する方法はありますか?

33
Jeff Axelrod

時間を合わせる方法はないと思います。エミュレータのデフォルトのイメージは、UTC/GMT(+00:00)に設定されています。ただし、独自のものに変更できます。

これを行う方法の画像は次のとおりです。まず「自動タイムゾーン」(赤い矢印)のチェックを外し、次に「選択されたタイムゾーン」(緑色の矢印)をクリックして、最後にタイムゾーンを選択します。システム(黄色の矢印)。 timezone screen shots

17
Raykud

私はこれをグーグルのトップリンクとして持っているので:)

windowsでは、次のコマンドを発行することで適切な時間を取得できます

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

-sの値は次の形式にする必要があります:YYYYMMDD.hhmmss

異なる時間形式があるシステムでは、Windows Shell argsのある部分異なる場合があります!

cmd.exeでテストできます:

> echo %date%
Thu 01/22/2015

YYYY部分を出力するには、次を使用します:%date:[position of char. 0-based],[length]%

linuxの場合:

adb Shell date -s $(date +%Y%m%d.%H%M%S)
6
Artem L

AVDとホストの時間に不一致がある場合は、主にスナップショットから再起動した後、adb Shell dateエミュレータを起動した直後に日付を確認または設定します。

5

他の回答以来、dateコマンドは新しいAndroidで変更されました。ルートが必要です。_-s_は認識されず、設定形式が変更されました。

_@_を使用してナノ秒精度のUNIXタイムスタンプ秒を設定するadb Shell su root date -u @$(date +%s.%N)を使用して運が良かったです。タイムスタンプにタイムゾーンを含めることはできませんが、何らかの理由でタイムゾーンを変更した場合は、_-u_が必要です。

3
Simon Buchan

Windowsでは、解析によって数字の前にスペースが返されるときのエラーを回避するために、日時文字列を引用符で囲む必要があります。

完全な構文は次のとおりです。

adb Shell date -s '%date:~10,4%%date:~4,2%%date:~7,2%.%time:~0,2%%time:~3,2%%time:~6,2%'
1
user4906642

AndroidTV API 28シミュレータでは、これは動作します(linux):

adb Shell su root date $(date +%m%d%H%M%Y.%S)

ホストのタイムゾーンは、AndroidTVのタイムゾーンと一致している必要があります。

0
Fred

同じ問題があり、エミュレータの電源ボタンを使用してエミュレータを再起動するだけで解決しました。