我有c#代码,可从API读取数据,然后最终将其插入db。
一切正常,然后突然有一天,代码决定它不再喜欢日期格式,并且没有给我这个错误:
System.FormatException:'字符串表示的DateTime不是 日历System.Globalization.GregorianCalendar支持。'
以下是失败的代码段:
dynamic obj = JsonConvert.DeserializeObject(readStream.ReadToEnd());
foreach (var apiData in obj)
{
DateTime resdate = Convert.ToDateTime(apiData.time);
}
在此图像中,我固定了apiData.time,以便您可以看到日期格式。
那我该怎么解决呢?谢谢
答案 0 :(得分:2)
看起来您可能需要更改正在使用的Convert.ToDateTime()
方法。您可以尝试使用DateTime.ParseExact处理您看到的全球化问题:
resdate = DateTime.ParseExact(apiData.time, "yyyy-MM-ddT24:mm:ssK", System.Globalization.CultureInfo.InvariantCulture);
不确定所需的确切格式,但是可以通过更改"yyyy-MM-ddT24:mm:ssK"
格式设置字符串来进行修改。您可以找到受支持的格式列表here。
如果DateTime
的格式无效(由对象的24:30
指示),则可以使用DateTime.TryParse()
方法检查该记录,然后再将其输入到您的数据库:
DateTime dateValue;
// check if DT is in valid format
if (DateTime.TryParse(apiData.time, out dateValue))
{
// case: valid date
// dateValue is the parsed value of apiData.date
} else {
// case: invalid date
}