从API读取时发生datetime格式异常

时间:2019-11-28 20:35:47

标签: c# datetime

我有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,以便您可以看到日期格式。 Image

那我该怎么解决呢?谢谢

1 个答案:

答案 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
}