オブジェクトのプロパティをTDateTimeからStringに変更することが最も提案される解決策であることはわかっていますが、Webサービスアプリケーションのすべてのソースコードにアクセスできないため、それができない場合があります。だから私はむしろ私が問題の世話をすることを確実にしたいのです。
簡単に言うと、Delphi 2005で記述されたサービスアプリケーションのWebメソッドを呼び出して、開始日時と終了日時を含む予定オブジェクトを取得する.NETMVCアプリケーションがあります。ユーザーは予定に変更を加えることができ、MVCアプリは別のWebメソッドを呼び出して、変更された予定オブジェクトを渡し、サービスアプリケーションに保存します。
TAppointemntのStartTimeプロパティとEndTimeプロパティは、DelphiではTDateTimeとして定義されています。それらはWSDLにxs:dateTimeとして表示されます。Visual Studioは、それらをReference.csにSystem.DateTimeとして作成します。
DelphiでWebAppDebuggerを使用し、MVCアプリのエンドポイントをWebサービスEXEに設定することで、両方のアプリケーションをリアルタイムでステップスルーできます。私が見ているのは、送受信されたAppointmentオブジェクトのStartTimeプロパティとEndTimeプロパティは、Webサービスから.NET MVCに渡されるときは同じですが、.NETMVCからDelphiに渡されるときは13時間調整されます。ウェブサービス。
.NETがいくつかの内部タイムゾーン調整を行うことは理解していますが、それはクライアントとサーバーが異なるタイムゾーンにある場合にのみ明らかになるはずです。私の場合、クライアントブラウザー、.NET MVCアプリ、およびDelphiサービスアプリは同じものにあります。実際、それらはすべて同じマシンで実行されているので、なぜ違いがあるのか途方に暮れています。
XMLで日時を異なる方法でエンコードしているように見えます...
Delphiサービスアプリから.NETMVCアプリへの応答:
<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アプリからDelphiサービスアプリへのPOST:
<StartTime xsi:type="xsd:dateTime">2012-10-29T08:00:00</StartTime><EndTime xsi:type="xsd:dateTime">2012-10-29T09:15:00</EndTime>