将字符串转换为日期时间UTC

时间:2015-08-02 20:22:08

标签: c# date datetime

我有这个字符串“Sun Aug 02 2015 00:15:47 GMT + 0000(UTC)”

我创建了很多日期时间格式“ddd MMM dd yyyy HH:mm:ss”

现在我不知道如何处理该日期时间字符串的结尾部分。 我不确定我所拥有的字符串是否是可以轻松转换的UTC标准格式,或者是否是自定义格式。

尽管如此,我想将该字符串日期时间转换为日期时间对象。

2 个答案:

答案 0 :(得分:3)

string str = "Sun Aug 02 2015 00:15:47 GMT+0000 (UTC)";
var dt = DateTime.ParseExact(str, "ddd MMM dd yyyy HH:mm:ss \"GMT\"zzzz \"(UTC)\"", CultureInfo.InvariantCulture);

答案 1 :(得分:2)

我会考虑这两种方法中的一种:

string str = "Sun Aug 02 2015 00:15:47 GMT+00:00 (UTC)";
str = str.Substring(0, str.IndexOf('(') - 1);
DateTime dt = DateTime.ParseExact(str, "ddd MMM dd yyyy HH:mm:ss 'GMT'K",
    CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);

string str = "Sun Aug 02 2015 00:15:47 GMT+00:00 (UTC)";
str = str.Substring(0, str.IndexOf('(') - 1);
DateTimeOffset dto = DateTimeOffset.ParseExact(str, "ddd MMM dd yyyy HH:mm:ss 'GMT'K",
    CultureInfo.InvariantCulture);

在任何一个例子中,我们假设括号中的部分是无关紧要的。如果您的输入因时区而异,则这可能很重要。

在第一个示例中,我们假设您希望输出始终是基于UTC的DateTime。输入偏移量可能会有所不同,但输出将始终调整为协调世界时,并且将具有DateTimKind.Utc

在第二个示例中,我们假设您希望输出与输入中提供的内容完全匹配。为此,输出必须是DateTimeOffset类型。否则,您将无法跟踪与UTC或您自己的本地时区不完全匹配的偏移量。

我更喜欢第二种选择。如果您需要DateTime,则可以通过调用生成的.DateTime的{​​{1}},.UtcDateTime.LocalDateTime属性来获取{<1}}。