2011-07-08 1 views
10

もう一つのParseExactの問題。私はいくつかの理由で正確なそれを解析することはできません末尾のZ.とUTC形式であるなぜDateTime.ParseExactはUTC形式を末尾のZで解析しないのですか?

"YYYY-MM-DDThh:mm:ss.ssZ"

:私はの形式で日時をUTCフォーマットされた文字列を解析しようとしています。私は "u"、 "s"、 "o"のカスタム書式文字列、およびいくつかのDateTimeStylesや手書き文字を試しました。文化は不変です。

何らかの理由で、ZがUTC文字列であることを示していません。それを取り除くと、解析されます。私は喜んで、いくつかの満足感をもって、末尾のZを取り除きます。私はそれらがUTC datetime文字列であることを知っていますが、私はできません。何か案は?

答えて

18

あなたが言及したフォーマット文字列はstandard format stringsです。

DateTime.ParseExact("2011-03-02T20:15:19.64Z", "yyyy-MM-ddTHH:mm:ss.ffK", null).ToUniversalTime() 

あなたが最後にToUniversalTime()を入れていない場合、結果はローカルタイムゾーンに変換されます:あなたは、おそらくこのように、custom format stringを使用する必要があります。

+0

ZはすでにUTC形式であるとは限りませんでしたか? –

+1

@scope、はい、そうです。しかし、上記のParseExact()の結果は、私にとって(UTC + 1)、 'DateTimeKind.Local'で' 2.3.2011 21:15:19'です。 UTC時間を取得するには、 'ToUniversalTime()'を呼び出さなければなりません。 – svick

+0

それは動作します。ありがとう@Svick。 –

関連する問題