5

Android フォン (Nexus one) と Java サーバー間の時間変換に少し問題があります。私が読んだものはすべて同じであると言っていますが、長いタイムスタンプを変換すると、1時間(正確に)失われるようです。

具体的には、Android デバイスで次のコードを実行すると、次の出力が得られます。

コード:

Calendar g = Calendar.getInstance();
g.setTimeInMillis(1340661899000L);
Log.d(TAG, g.getTime().toLocaleString());

出力: 2012 年 6 月 25 日 18:04:59

これは正しいと思いますが、Javaサーバーでまったく同じコードを実行すると、同じ日ですが1時間早くなります

コード:

Calendar g = Calendar.getInstance();
g.setTimeInMillis(1340661899000L);
System.out.println(g.getTime().toLocaleString());

出力: 2012 年 6 月 25 日 5:04:59 PM

誰がこれを引き起こしているのか知っていますか? サーバーと電話の両方が同じ場所にあり (問題ではありません)、サーバー ボックスと電話の両方の時計が一致します。

4

2 に答える 2

4

1 時間の違いを考慮して、電話ではなくサーバーで DST (夏時間) を設定できますか、またはその逆でしょうか?

于 2012-06-25T19:17:39.103 に答える
1

クリスが言おうとしているのは、電話とサーバーが異なるタイムゾーンに設定されている可能性があるということです。

の結果を印刷してみてくださいcal.getTimeZone()。これが問題である場合は、通信に使用するタイムゾーンを選択する必要があります。例えば:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+0"));

JavaDocsによると、カレンダーインスタンスは次のように報告されるデフォルトのタイムゾーンを使用します。

TimeZone.getDefault()

サーバーとモバイルが同じTimeZoneに設定されていても、必ずしも同じデフォルトのTimeZoneを使用しているとは限りません。

于 2012-06-25T19:47:30.167 に答える