私はGWT RPCを使用してクライアントからサーバーに日付を含む文字列を送信しています(リクエストヘッダー上にあるため、この方法が必要です)。GWTクライアント - サーバSimpleDateFormatがタイムゾーンをデフォルトに変更しました
サーバー側で、SimpleDateFormatでその文字列を解析し、必要なロジックを作成します。
私は自分の携帯電話とコンピュータの両方を異なるタイムゾーンに設定しており、ホストモードを使用してtomcatでテストプロジェクトを実行します。
クライアント::
DateTimeFormat dtf = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss Z");
Date date = new Date();
System.out.println("client: " + date.toString());
System.out.println("client: " + dtf.format(date));
builder.setHeader("Date1", dtf.format(date));
サーバー:
String dateHeader = request.getHeader("Date1");
System.out.println("Server date header from client: " + dateHeader);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
System.out.println("x = " + sdf.parse(dateHeader));
System.out.println("Timezone = " + df.getTimeZone().getDisplayName());
結果:水曜日4月11日17:29:モード
クライアントをホスト
ここ
コードです:49 NOVST
クライアント:2012-04-11 17:29:49 +0700
クライアントのサーバー日付ヘッダー:2012-04-11 17:29:49 +0700
x =水曜日Apr 11 17:29:49 NOVST PCの使用2012
Tomcatの
- :クライアント、およびサーバが同じ時間を持っています。クライアントから
(明らかに、クライアントのプリントを参照することはできません)
Serverの日付ヘッダ:2012-04-11 17時31分37秒0700
X =水曜日4月11日17 :31:37 NOVST 2012
- 携帯電話クライアントは、サーバーとは異なります。
クライアントからサーバー日付ヘッダを:2012-04-11 15時34分35秒0500
X =水4月11日午後05時34分35秒NOVST 2012
結論: てSimpleDateFormatは、そのタイムゾーンを無視文字列に来る。私はそれを望んでいない!私はこれが適切に動作するようにします。どうすればこの作品を作れますか?進んでいただきありがとうございます。
あなたのご意見ありがとうございます。私はこれらの2つのオプションについて考えていた、タイムゾーンを分離するか、またはJodaTimeを使用する。私はすでにJodaTimeを試していますが、それはホストモードではうまくいきますが、私はそれをtomcatインスタンスで動作させることはできません。 –