1

私はExcelから(.net)Webサービスを照会しています(バックラッシュからカバーします)。これは日付の配列を返します。サーバー上の Web サービスを確認したところ、元の日付は正しいものでした。

次に、Fiddler を使用してクライアント マシンで呼び出しを表示しました。真夜中の日付には、末尾に Z があり (UTC としてマークするため)、他のすべての日付時刻にはありません。

更新 上記のステートメントは間違っています。Z でマークされているのは最初と最後の日付です。時刻は関係ありません。クライアントが最初と最後の日付のみを調整するという残りの部分は正しいです

SOAPがこれをUTCからローカル(BST)に変更しているため、1時間が追加されていると思います。

私の質問は、これらの日付に Z が追加されないようにするにはどうすればよいですか (またはローカルに変更するには) ?

IIS 7.5 でカルチャを確認したところ、en-GB に設定されており、サーバーは UK に設定されています。

4

1 に答える 1

1

少し面倒です。これは実際には答えではありませんが、試してみるべきことがいくつかあります。

1 つの方法は、オフセットを削除することです。持っているコードはありませんが、擬似的なコードではそうかもしれません

TimeZone tz = GlobalizationNamespace.GetTimeZone("Greenwich Mean Time");
SomeDateTimeNoOffset = SomeDateTime.AddHours(tz.GetUtcOffset(SomeDateTime));

これにより、TimeZone オフセットがないため、サービスが最後に Z を配置できなくなる可能性があります。

もう 1 つのオプションは、サービス コントラクトでプロパティを文字列として公開することです。

public string DateTimeNoTzInfo
{
   get { DateTime.ToString('yyyy-MM-ddThh:mm:ss.ttttt') }
}
于 2012-04-30T11:28:00.150 に答える