将字符串转换为UTC日期时间
本文关键字:日期 时间 UTC 字符串 转换 | 更新日期: 2023-09-27 18:05:54
我有这个字符串"Sun Aug 02 2015 00:15:47 GMT+0000 (UTC)"
我创建了这么多的日期时间格式" add MMM dd yyyy HH:mm:ss"
现在我不知道该如何处理datetime字符串的结束部分。我不确定我所拥有的字符串是否为UTC的标准格式,可以很容易地转换,或者如果它是自定义格式。
尽管如此,我还是想把字符串datetime转换成一个datetime对象。
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);
我会考虑以下两种方法之一:
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
,您总是可以通过调用DateTimeOffset
的.DateTime
、.UtcDateTime
或.LocalDateTime
属性来获得一个。