2009-09-13 9 views
1

iCalendarの日付を.netで解析する直接の方法はありますか? アンiCalendar形式の日付は次のようになります。c#を使ってiCalendar日付を解析する#

2009-08-11T10:00+05:0000 

私は友好的なフォーマットでそれを表示するには、それを解析する必要があります...おかげ

+0

は半答えを見つけました上記の日付は例外を発生させます、明らかにそれは最後の2つのゼロを許可しません!私は最後の2つのゼロが何のためにあるのか分からないが、これの周りに道があるのだろうか? – Ayyash

+0

下記の私の答えを見て、私はその日付が10:00 + 5時間すなわち15:00(午後3:00)と仮定していました。 –

答えて

1
string strDate = "2009-08-11T10:00+05:0000"; 
DateTimeFormatInfo dtfi = new DateTimeFormatInfo(); 
dtfi.FullDateTimePattern = "yyyy-MM-ddTHH:mmzzz"; 

DateTime dt = DateTime.Parse(c.Substring(0, c.Length-2), dtfi); 

zzzはタイムゾーンのですが、このように発現された場合にのみ認識されます:+ XX:XX 。 私はあなたの例でテストし、最後の2 0を削除してからカスタムのDateTimeFormatInfoで解析します。

0

あなたは+の前に、すべてを解析するDateTime.Parse()を使用することができます。私はiCalendar形式の仕様を知らないが、+の前に日付に追加する時間/分があると仮定します。だからAddHours()AddMinutes()を使って、DateTime.Parse()によって返されたDateTimeに必要なビットを追加することができます。

これは、解析する文字列のビットが必要ですが、正規表現のビットとあなたは問題ないはず...

0

これは、標準のフォーマット文字列ではありませんが、正確な形式を知っているので、あなたがDateTime.ParseExactを使用することができますし、このように、a custom format stringを指定:

DateTime.ParseExact(d, "yyyy-MM-ddTHH:mmzzz00", CultureInfo.InvariantCulture); 

を「ZZZ」指定子はからのオフセット時間と分を表し、 UTCであり、2つの結論のゼロは、あなたが扱っているフォーマットにマッチする単なるリテラルです。 。、iCalendar形式をculturecurrentとしてNoneとスタイルで、D・フォーマット・プロバイダを のDateTime .. ::解析メソッド(String、するIFormatProvider、DateTimeStyles) を使用して、私はまだ問題を抱えている :

関連する問題