0

Microsoft.NET 2.0に、XMLを型付きオブジェクトに逆シリアル化し、ServiceDescriptionを使用して動的にWebサービスに接続し、逆シリアル化された型付きオブジェクトをWebMethodインバウンドにバインドする小さなスクリプトを用意します。シリアル化前のXMLは次のようになります

<completion_time>12:19:38</completion_time> 

Webサービスと通信するときのネットワーク上は以下のようになります

<completion_time>12:19:38.0000000-04:00</completion_time>

タイムゾーンが最後に追加されます。これにより、異なるタイムゾーンでWebサービスと通信するときに、時刻の読み取りが異なります。XmlSerializerにタイムゾーンをスキップさせる方法はありますか?または他の既知の回避策はありますか?

4

3 に答える 3

1

同じ問題に遭遇しました。最後に、DataColumn オブジェクトのDateTimeModeプロパティを見つけました。Time のシリアル化方法を制御するDataSetDateTime 列挙体のメンバーを受け取ります。Unspecified に設定すると、シリアライザーは時間の変換を実行できなくなります。

既存の DataSet をループして、次のようにモードを設定できます。

        foreach (DataColumn column in table.Columns) {
            if (column.DataType == typeof(DateTime)) {
                column.DateTimeMode = DataSetDateTime.Unspecified;
            }   
        }
于 2011-05-11T19:01:27.097 に答える
0

http://blogs.msdn.com/brada/archive/2004/04/13/112784.aspx

[XmlElementAttribute(DataType="date")]

public DateTime date;

また

[XmlAttributeAttribute(DataType="date")]

public DateTime date;
于 2010-03-30T21:42:36.617 に答える
0

「completion_time」フィールドのタイプを DateTime から文字列に変更し、日時フォーマッタを使用してタイムゾーンなしで日時文字列を取得できます

DateTime 日付 = DateTime.UtcNow; date.ToString("hh:mm:ss");

于 2010-03-30T21:32:39.203 に答える