2009-03-19 45 views

答えて

44

のXmlの読者は、一般的には非常に特定の形式で日付/時刻を期待します。あなた自身がXmlConvertを使用して、これを使用することができます。

string s = XmlConvert.ToString(DateTime.Now); 
DateTime when = XmlConvert.ToDateTime(s); 

あなたが何か他のものを使用している場合は、文字列としてそれを読むと、実際のフォーマット文字列を指定するDateTime.TryParseExact(または類似)を使用する必要があります:

string s = reader.ReadContentAsString(); 
DateTime when = DateTime.ParseExact(s, "M/d/yy hh:mm tt", 
    CultureInfo.InvariantCulture); 

あなたがXmlSerializerを使用している場合は、変換を行うにシムプロパティを使用することができます - これは、あなたがやっていることであるなら、私が知っているように...

+0

私が摂食していたデータは、10/29/2012 15:25となってしまい、失敗しました。私が10/11/2012 15:25に変更したとき、それはうまくいった。 –

+0

@MarcGravell、 'XmlSerializer'を使っていくつかのrssフィードを非直列化しようとすると、' PubDate'要素がエラーを引き起こします。どうすれば修正できますか? – burhan

+2

@burhan値がどのように入ってきているのかを見て、それを適切に処理しますか?代わりに、コアフレームワークには、より良い仕事をすることができるRSSターゲットクラスが含まれています。 –

82

XML schema仕様によると、日付時刻値は、である必要がありISO860 1形式(

2009-03-13T22:16:00 
+2

ルビーでは 'iso8601'メソッド、例えば' Time.now.iso8601'を使います。 – Zubin

+2

ISO8601フォーマットは好奇心のため、 '2009-03-18T22:16:00-05:00'のように見えるはずですが、ISO8601フォーマットではないDavidの回答(タイムゾーンを省略)も私のために働きます。これは、XmlConverterのローカルシリアル化のためです(したがって、タイムゾーンは不要です)。 – djiango

+1

ISO8601では、タイムゾーンはオプションです。したがって、オリジナルの文字列と文字列の両方が有効なISO8601の日付時刻になります。 http://www.w3.org/TR/xmlschema-2/#deviantformatsによると、XMLスキーマではタイムゾーンもオプションです。なぜタイムゾーンのバージョンがあなたのために機能しないのか分かりません。 –

関連する問題