文字列 "20111027"をGMTのタイムゾーンを持つDateTimeに変換する

私はこの形式の文字列を持っています: "20111027"、すなわち一般的な形式: "yyyyMMdd"。

これをタイムゾーンGMT のDateTimeに変換するにはどうすればよいですか?

このコードはいくつかの変換を行いますが、どのようなタイムゾーンが使用されるかは不明です:

DateTime date = DateTime.ParseExact(dateString, "yyyyMMdd",
                               CultureInfo.InvariantCulture);
3

2 答え

AssumeUniversalDateTimeStyles を使用します。

DateTime date = DateTime.ParseExact(dateString, "yyyyMMdd",
                                    CultureInfo.InvariantCulture,
                                    DateTimeStyles.AssumeUniversal);

DateTimeStyles.AssumeUniversal のドキュメントから:

解析された文字列にタイムゾーンが指定されていない場合、その文字列はUTCを示すものとみなされます。

ちょうどあなたが欲しいもののような音:)

(あるいは、ノーダタイムを使用して、 LocalDate に解析することもできます。すべて、なぜ時間と時間帯を気にするタイプを使用するのですか?:)

5
追加された

ドキュメントから:

sが特定のタイムゾーンで時間を表していない場合、解析操作が成功した場合、返されるDateTime値のKindプロパティは DateTimeKind.Unspecified です。

を使用して種類を変更できます> DateTime.SpecifyKind

date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
5
追加された