3

私の Web アプリケーションは、WebGui と WebService に分割されています。WebService は、ビジネス ロジックとデータベースの処理を担当します。ブラウザの Javascript から、ブラウザからの入力である日時に応じてデータを要求します。このリクエストは WebGui の .asmx URL にアクセスし、この関数内で Web サービスが呼び出されます。

私の開発システム (windows xp) では適切なデータを取得できますが、テスト システムにインストールすると、適切なデータを取得するためにローカル タイム ゾーンの差を追加する必要があります。

たとえば、日付と時刻「21.07.2008 14:27:30」のデータが必要な場合は、「21.07.2008 16:27:30」を送信する必要があります。

2 つのシステムで動作が異なるのはなぜですか? また、両方のシステムで同じ動作を行うにはどうすればよいですか?

  • Web GUIはasp.net 2.0 c#にあります
  • Web サービスは asp.net 1.1 c# にあります

アップデート

これは、JSON プロトコルで "/Date(1221738803000)/" として日付と時刻が送信されるため、さまざまな形式の日付を解釈する問題ではありません。タイムゾーンの解釈/忘れの問題です。

4

4 に答える 4

3

これは、.NET 2.0 で導入された DateTime.Kind プロパティに関係していると思われます。デフォルトでは、これは DateTimeKind.Unspecified に設定されています。これは、ほとんどの場合、DateTimeKind.Local と同じように処理されるため、日付がシリアル化されると UTC に変換されます。Web サービス呼び出しに渡す前に、DateTime.SpecifyKind(...) を使用して Kind を DateTimeKind.Utc に設定することができます。

于 2008-10-10T15:17:21.720 に答える
1

Json.NET を使用してシリアル化を処理してみてください。

シリアル化形式に関する次のコメントに注意してください。

http://james.newtonking.com/archive/2008/08/25/json-net-3-0-released.aspx

于 2008-10-14T19:05:28.093 に答える
0

タイムゾーンが問題にならない場合は、代わりに日付/時刻を書式設定された文字列として渡します。これにより、どのように表示されるかを正確に把握し、DateTime.Parse を使用してサーバー側で DateTime に変換します。

于 2008-10-08T22:02:14.367 に答える
0

サーバーのカルチャ設定に応じて、日付の解釈が異なります。つまり、日付が 01.05.2008 の場合、en-GB (英国) のカルチャは日付を 5 月 1 日と読み取り、en-US のカルチャを持つシステムは 1 月 5 日と読み取ります。

これを回避するには、日付が常に UTC 形式 (yyyy-mm-dd) で送信されるようにする必要があります。これは、カルチャに関係なく常にそのように解釈されます。

于 2008-09-18T14:24:35.417 に答える