2

C# では、「2012-09-03T06:35:31Z」を Datetime に変換しようとしています。

Date = DateTime.ParseExact( "2012-09-03T06:35:31Z", ???);

関数の残りの部分を解析する方法がわかりません

4

3 に答える 3

2

形式が常に UTC であると指定され、 で示されているかどうかはわかりませんZ

もしそうなら、

DateTime.ParseExact(
  yourDateString, @"yyyy\-MM\-ddTHH:mm:ss\Z",
  CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)

うまくいきます。

ただし、取り組んでいる標準で UTC が指定されていない場合、対処しなければならない入力は、たとえば2012-09-03T06:35:31+05:002012-09-03T06:35:31+0500使用している ISO 8601 形式に依存する可能性もありZます+00:00。その可能性を処理する必要がある場合は、最初に を作成しDateTimeOffset、それから同等の UTCDateTimeを取得します。

DateTimeOffset.ParseExact(yourDateString,
  new string[]{@"yyyy\-MM\-ddTHH:mm:sszzz",@"yyyy\-MM\-ddTHH:mm:ss\Z"},
  CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).UtcDateTime

をまだ使用していることに注意してくださいAssumeUniversal。これは、2 番目の形式が「AZ がここに表示される」ことを示しているためですが、メソッドはそれを無視するため、この形式を明示的に UTC として解釈する必要があります。ただし、最初の形式では、zzzはタイムゾーンを提供するため、AssumeUniversalは無視されます。(または、別の言い方をすれば、別の言い方をするまでは普遍的であると想定しており、その形式は実際にそうではありません)。

于 2012-09-06T23:05:39.463 に答える
2
//using System.Globalization; should be at top

Date = DateTime.ParseExact("2012-09-03T06:35:31Z", "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal)

カスタムの日付と時刻の形式に関するドキュメントを参照してください。これはsortable formatに似ていますが、末尾に Z が付いています。

于 2012-09-06T22:34:36.613 に答える
1

Xml 日付を解析しようとしているようです。この場合、XmlConvert クラスを使用することをお勧めします...

Date = System.Xml.XmlConvert.ToDateTime("2012-09-03T06:35:31Z", XmlDateTimeSerializationMode.Local);

XmlDateTimeSerializationMode を適切な値に変更する必要があります。

于 2012-09-06T22:43:51.960 に答える