Android クライアント側で Java を使用し、サーバー側で Python を使用する、開発中の時間ベースのアプリケーションでいくつかの問題が発生しています。Java と Python によって報告された時間で、-3 時間 (Android デバイスの正確なタイムゾーン) の不一致が発生しましたが、両方の側で (SO および他のサイトによると) ) は UTC 時刻を返します。私のクライアントでは、私は使用しています
Date utcNow = new Date()
そしてサーバーでは、私は使用します
datetime.datetime.now()
それでも、同時に実行する2013-09-09 11:52:16
と2013-09-09 14:52:16
、それぞれ と が得られます。date
サーバーで実行するとPythonと同じ値が(明らかに)タイムゾーンUTCで返され、Androidデバイスで同じコマンドがBRT(GMT-3)時間を返すため、問題はJava側にあると思われます。
両方の言語でタイムゾーン調整を検索している間、すべての回答は上記の方法が UTC 日付を返すと主張しましたが、この違いははっきりと見えます。
Android デバイスの時刻を UTC に変換するにはどうすればよいですか?
現在、私は本当に醜い(そして非常に非推奨の)ソリューションを使用しています:utcNow.setHours(utcNoe.getHours()+3)
編集:補足: Jon の回答から、Java のDate
オブジェクトは Python の単純なオブジェクトと同等であることに気付きましたdatetime
。