2

テスト環境のローカル コンピューターで ASP.NET Web サービスを実行しています。ローカル コンピューターの UTC 時間は +1 (デンマーク) です。これで、JavaScript クライアントでこれらのメソッドを使用できるようになりました。

[WebMethod(EnableSession=true)]
public DateTime GetDateTime() {
  return new DateTime(2013,3,15,10,0,0);
}

[WebMethod(EnableSession=true)]
public void SetDateTime(DateTime DT) {

}

JavaScript から最初のメソッドを呼び出して、渡された DateTime をアラートすると、午前 10 時の時刻が正しく表示されます: 'Fri Mar 15 2013 10:00:00 GMT+0100 (Romance Standard Time)'オブジェクトを Web サーバーに戻します。しかし、このオブジェクトをデバッグすると、DateTime は現在午前 9 時です。どうして?クライアントとサーバーは同じマシン上で実行されます。DateTime.SpecifyKind をいじってみましたが、全体として結果は同じです。クライアントは、時刻がサーバーに送り返されるときに 1 時間を減算します。

この件についての理解を深めるお手伝いができれば幸いです。

前もって感謝します。

4

1 に答える 1

0

@millimoose DateTimeOffset ソリューションを試しましたが、実際には役に立ちませんでした。ただし、100%正しく使用したかどうかはわかりません。今私にとってうまくいくのはこれです:

サーバーからクライアントに DateTime(s) を送信する前に、DateTime に対して何もしません (UTC の設定など)。JavaScript クライアントは正しい時刻を表示します。JavaScript が時間をサーバーに送り返すと、1 時間が追加されます。次に、.ToLocalTime(); を呼び出します。DateTime オブジェクトで、時刻が正しくなりました。

于 2013-03-04T16:16:32.350 に答える