Iは、人間が読める形式にGPS位置のタイムスタンプを変換するために、次のコードを使用:the docs 1としてAndroidのString.format()はタイムゾーン対応ですか?
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", location.getTime())
、GPS位置のタイムスタンプがUTCであるべきです。しかし、私が返す文字列は現地時間にあります(2つの異なるデバイスでテストされています)。
他の形式のString.format()
を使用しようとしましたが、これは追加のLocale
引数をとり、nullロケール(ドキュメントごとに「ローカリゼーションなし」を意味します)を渡します。 (Locale
のドキュメントにはタイムゾーンはまったく記載されていないので、ここではロケールは問題ではないと思われます)。
私の他の疑問は、GPSスタックがUTCではなく現地時間を指定したとおりに動作しない可能性があるということでした。私はエポックプラスCETのためにタイムゾーンのオフセット(デバイスのタイムゾーン)の始まりである
1970-01-01 01:00:00
を返し
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", (long) 0)
でこれをテストしました。オフセットは明らかにString.format()
によって追加されます。
String.format()
はタイムゾーン変換を行う予定ですか?この動作にどのような影響を与えることができますか?つまり、コンバージョンの対象となるタイムゾーンを選択するか、コンバージョンを完全に抑制しますか?
'String.format()'がタイムゾーンを完全に認識していなかったなら、 '0L => 1970-01-01 00:00:00'と期待していましたが、明らかに、 UTCで入力し、出力を現地時間としてフォーマットします。欠けているものは、その処理に影響する方法です。私は 'DateFormat'を使って簡単に入手でき、本当にシンプルなので終わりました。 – user149408