转换字符串“20111027"”到时区为GMT的DateTime

本文关键字:时区 GMT DateTime 字符串 20111027 quot 转换 | 更新日期: 2023-09-27 18:12:31

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

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

这段代码做了一些转换,但不清楚将使用哪个时区:

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

转换字符串“20111027"”到时区为GMT的DateTime

使用AssumeUniversalDateTimeStyles:

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

From docs of DateTimeStyles.AssumeUniversal:

如果解析的字符串中没有指定时区,则假定该字符串表示UTC。

听起来正是你想要的:)

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

来自文档:

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

您可以使用DateTime.SpecifyKind:

更改Kind
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);