我从一些 JSON API 返回的数据中看到了一个非常奇怪的日期格式,这是我从未见过的。
"Tue Aug 04 2015 00:17:38 GMT+0000 (UTC)"
使用以下方法解析时,会生成以下错误:
System.FormatException: 字符串未被识别为有效的 DateTime。
可以理解这个错误。
DateTime.Parse(x.process_date.Value)
有没有遇到过复杂的日期格式,知道如何解析的人?
我从一些 JSON API 返回的数据中看到了一个非常奇怪的日期格式,这是我从未见过的。
"Tue Aug 04 2015 00:17:38 GMT+0000 (UTC)"
使用以下方法解析时,会生成以下错误:
System.FormatException: 字符串未被识别为有效的 DateTime。
可以理解这个错误。
DateTime.Parse(x.process_date.Value)
有没有遇到过复杂的日期格式,知道如何解析的人?
DateTime.ParseExact
方法(或DateTime.TryParseExact
,以便清晰地处理解析失败),来完成此操作。这些方法允许您显式指定格式字符串。var dateString = "Tue Aug 04 2015 00:17:38 GMT+0000 (UTC)";
var format = "ddd MMM dd yyyy HH:mm:ss GMT+0000 (UTC)";
var parsed = DateTime.ParseExact(
dateString,
format,
System.Globalization.CultureInfo.InvariantCulture);
TryParseExact
:DateTime parsed;
if (DateTime.TryParseExact(
dateString,
format,
System.Globalization.CultureInfo.InvariantCulture,
DateTimeStyles.None,
out parsed)
{
// parsing was successful
}
else
{
// parsing failed
}
K
或zzz
修饰符,或者简单地剪切一些文本,即剪切(UTC)
并解析GMT+0000
。在剪切时要小心不要丢失信息,但我猜(UTC)
是多余和冗余的,如果您尊重GMT+0000
部分的话。 - holroyTue
、Aug
或2015
以及GMT+0000
,但这似乎不是一个好主意 :) - RawlingGMT+0000(UTC)
是硬编码的。OP需要查看他的数据集以查看它们是否在更改,然后决定如何处理这后半部分。如果它们正在更改,Donut的答案将抛出异常(我相当确定他知道这一点)。 - holroy