2011-10-27 61 views
3

我有一个格式为“20111027”的字符串,即通用格式:“yyyyMMdd”。将字符串“20111027”转换为GMT时区的DateTime

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

此代码做一些转换,但目前还不清楚会使用什么时区:

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

回答

5

使用DateTimeStylesAssumeUniversal的:

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

docs of DateTimeStyles.AssumeUniversal

如果没有指定时区在t他解析了字符串,该字符串被假定为表示UTC。

听起来像是你想要什么:)

(或者你可以使用Noda Time和其解析到LocalDate,只表示日期,毕竟,所以为什么要用这样一种类型,关心倍,时区?:)

5

documentation

如果s没有在特定的时间段和代表时间解析操作成功,返回的DateTime值的Kind属性为DateTimeKind.Unspecified

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

date = DateTime.SpecifyKind(date, DateTimeKind.Utc);