3

カレンダーから将来の日付を選択する必要があります。選択している日付が 2013 年 4 月 30 日であるとします。今私が欲しいのは、日付をサーバーに送信することです。サーバー側で、将来の日付と現在の日付の間の日数を計算してデータベースに送信する必要があります。

問題は、計算をローカルで行うと (サーバーとブラウザーが同じタイムゾーンにあるため) 正常に動作することですが、サーバーがブラウザーとは異なるタイムゾーンにある場合、日数の差が期待どおりにならないことです。タイムゾーンの問題を解決する方法を教えてください。

4

2 に答える 2

0

GMT などの 1 つの共通タイムゾーンで両方の日付を変換し、差を計算します。

于 2013-04-17T09:33:04.637 に答える
0

時差のオフセットに

タイムゾーンを含むデータを送信するには、形式を使用する必要があります。あなたは出来る:

  1. タイムゾーンを使用しない UNIX 時間 (エポックからのミリ秒) を GMT 00 で使用し、これを Java 側でも使用します。

参照: 現在の日付/時刻を秒単位で取得する

  1. 標準であり、ブラウザのタイムゾーンも含めることができる ISO-8601 を使用して、このサーバー側を解析します。

見る:

差を計算するには (MS と Calendar オブジェクトを使用)

カレンダー オブジェクトを使用する必要があります。カレンダー オブジェクトを作成し、将来の日付を設定します。たとえば、 Java.util.calendar を将来の特定の期間に設定する方法 次に、現在の日付 (最長) を、カレンダー、および(1000 * 60 * 60 * 24)で除算します。

特定の日時 (真夜中) より後のエントリを見つけるために、自分のアプリケーションで使用したコード:

long currentTimeStamp = System.currentTimeMillis();
Calendar cal;
cal = Calendar.getInstance();
cal.setTime(new Date(currentTimeStamp));

//GET MS OF MIDNIGHT FROM BEGINNING OF THE DAY
cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND,0);
long midnight = cal.getTimeInMillis();
if(currentTimeStamp - midnight > (30*24*60*60*1000))break;
于 2013-04-17T09:30:32.757 に答える