将字符串"20111027"转换为时区为GMT的DateTime

Enc*_*ada 3 c# datetime

我有一个这种格式的字符串:"20111027",即一般格式:"yyyyMMdd".

如何将其转换为具有GMT时区的DateTime ?

此代码进行了一些转换,但不清楚将使用哪个时区:

DateTime date = DateTime.ParseExact(dateString, "yyyyMMdd",
                               CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

文档:

如果s不表示特定时区的时间并且解析操作成功,则返回的DateTime值的Kind属性为DateTimeKind.Unspecified.

您可以更改Kind使用DateTime.SpecifyKind:

date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 5

使用DateTimeStylesAssumeUniversal:

DateTime date = DateTime.ParseExact(dateString, "yyyyMMdd",
                                    CultureInfo.InvariantCulture,
                                    DateTimeStyles.AssumeUniversal);
Run Code Online (Sandbox Code Playgroud)

来自以下文件DateTimeStyles.AssumeUniversal:

如果在解析的字符串中未指定时区,则假定该字符串表示UTC.

听起来就像你想要的:)

(或者你可以使用Noda Time并将其解析为a LocalDate.它只代表一个日期,毕竟,为什么要使用一个关心时间和时区的类型?:)