我有这个字符串“Sun Aug 02 2015 00:15:47 GMT + 0000(UTC)”
我创建了很多日期时间格式“ddd MMM dd yyyy HH:mm:ss”
现在我不知道如何处理该日期时间字符串的结尾部分。 我不确定我所拥有的字符串是否是可以轻松转换的UTC标准格式,或者是否是自定义格式。
尽管如此,我想将该字符串日期时间转换为日期时间对象。
答案 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}}。