ほとんどの場合、私のオブジェクトのプロパティをTDateTimeからStringに変更することをお勧めしますが、Webサービスのすべてのソースコードにアクセスすることはできません私はそれをすることができない場合があります。だから私はむしろ私が問題を世話することを確実にしたいと思います。デルファイのWebサービスは、.net mvcアプリケーションと異なるdatetimeを取得します
簡単に言えば、Delphi 2005で作成されたサービスアプリケーションのWebメソッドを呼び出して、開始日時と終了日時を含む予定オブジェクトを取得する.NET MVCアプリケーションがあります。ユーザーは予定を変更できます。その後、MVCアプリケーションは、修正された予定オブジェクトを渡して別のWebメソッドを呼び出し、サービスアプリケーションを保存します。
TAppointemntのStartTimeプロパティとEndTimeプロパティは、DelphiでTDateTimeとして定義されています。それらはWSDLにxs:dateTimeとして表示されます。 Visual StudioはReference.csにSystem.DateTimeとしてそれらを作成します。
DelphiでWeb App Debuggerを使用し、MVCアプリケーションのエンドポイントをWebサービスEXEに設定することで、両方のアプリケーションをリアルタイムで処理できます。私が見ているのは、Webサービスから.NET MVCに渡されたときに送信されたAppointmentオブジェクトのStartTimeプロパティとEndTimeプロパティが同じですが、.NET MVCからDelphiに渡すときに時間が13時間調整されるということですウェブサービス。
.NETはいくつかの内部タイムゾーン調整を行いますが、クライアントとサーバーが異なるタイムゾーンにある場合にのみ明らかにする必要があります。私の場合、クライアントブラウザ、.NET MVCアプリ、Delphiサービスアプリは同じものです。実際には、それらはすべて同じマシン上で実行されるため、私はなぜその違いが失われています。
彼らは違ったXMLでの日付時刻を符号化するようにそれは見えない...
.NET MVCアプリへのデルファイサービスアプリケーションからの応答:
<StartTime xsi:type="xsd:dateTime">2012-10-29T08:00:00.000+13:00</StartTime><EndTime xsi:type="xsd:dateTime">2012-10-29T09:15:00.000+13:00</EndTime>
.NET MVCアプリからのPOSTデルファイサービスアプリへ:
<StartTime xsi:type="xsd:dateTime">2012-10-29T08:00:00</StartTime><EndTime xsi:type="xsd:dateTime">2012-10-29T09:15:00</EndTime>
13はさらに悪化しています。 –