1

したがって、「hh:mm:ss」の形式で localTime 文字列がサーバーに送信されます。クライアントのタイムゾーンを特定する方法はありますか?

これまでのところ、DateTimeFormatter を使用して文字列を joda DateTime に変換し、timeZone UTC に関連するオフセットを取得できますが、クライアントで取得された timeStamp と計算が行われる時間の間に遅延があるため、これは正確ではない可能性があります。サーバー上で (たとえば、クライアントから送信された時間が 11:59:59 +01:00 で、サーバー上で 2 秒の遅延で到着した場合、計算はおおよそ次の形式になります: 11:59:59 - 11:00:01 = 0 時間のオフセットは間違っています)。

クライアントに localTime の代わりに timeZone を強制的に送信する以外の提案はありますか?

4

2 に答える 2

2

現地時間を指定してタイムゾーンを計算する方法はありませんUTC からのオフセットを計算できますが、それはタイムゾーンと同じではありません。

ユーザーのタイムゾーンが必要な場合は、場所を特定できる可能性が高いため、IP アドレスから作業することをお勧めします。

于 2013-09-12T08:57:00.723 に答える
0

エラー マージンが数分以内の場合は、受信したローカル時間から UTC 時間を減算し、最も近い時間に丸めてオフセットを取得できます。おそらく、Minutes.minutesBetween を使用してから、60.0 で割って丸めることができます。:30 と :45 のタイム ゾーンが気になる場合は、15.0 で割り、四捨五入して 15 を掛けると、オフセットを分単位で取得できます。

ただし、オフセットを取得すると、それを使用する一意のタイム ゾーンがなくなる場合があります。また、そのオフセットに対応するタイム ゾーンのリストは、完全な日付に依存します (DST のため)。したがって、本当にタイムゾーンが必要な場合は、クライアントに送信してもらう方がよいでしょう。

また、joda 時間を使用して 2 つの日付の秒数の違いを確認しますか? UTCオフセットでタイムゾーンを決定するにはどうすればよいですか?

于 2013-09-11T17:49:14.103 に答える