2012-03-22 7 views
1

datetimesを含むオブジェクトをシリアル化するサードパーティのサービスを使用しています。wcf GMTオフセット付きのDateTimeとXMLシリアル化の矛盾

2012-03-22T15:18 -05:31 00

いくつかのクラスのいくつかのDateTimeプロパティがなし文字列にシリアライズいくつかのクラスのいくつかのDateTimeプロパティは、オフセット等を文字列にシリアライズオフセットのような:

2012-03-24T00:00:00

私はサービスがオフセット日時を期待していると信じています。 クラスに強制的に日時オフセットをシリアル化できる方法はありますか?

答えて

1

いくつかのオフセットGMTとシリアルのDateTimeといくつかの

のDateTime

の日付時刻がDateTime.Now(で作成 kindプロパティに関係していませんが)DateTimeKind.LocalとしてのKindプロパティを設定した理由 DateTime.Parse()でDateTimeを作成し、KindプロパティをDateTimeKind.Unspecifiedとして設定します。

関数ToString( "o")を使用してGMT形式にシリアル化することができます。不特定の種類はオフセットを知らないのでスキップされます。

、不特定の種類:2012-03-24T00:00:00 地元の種類:2012-03-22T15:31:18 -05:00

ありSpecifyKindと呼ばれる機能があるが、親切場合にのみ動作しますNOTは未指定に設定されています。

解決策は、次のコンストラクタを使用してDateTimeを作成することです。 DateTime(年、月、日、時、分、秒、DateTimeKind.Local);

public static DateTime SpecifyKindLocal(this DateTime datetime) 
    { 
     return new DateTime(datetime.Year, datetime.Month, datetime.Day, datetime.Hour, datetime.Minute, datetime.Second, DateTimeKind.Local); 
    } 

私はそれが

他の誰かを役に立てば幸い:

http://msdn.microsoft.com/en-us/library/t882fzc6.aspx

私はこのための短い拡張メソッドを作成しました