C#解析DateTime无法将字符串转换为DateTime

C# Parsing DateTime Unable to Convert String to DateTime

我按照我的日期变量的字符串输出,按照格式解析,还是遇到格式异常

我可以知道我应该更改什么吗?

string DOB = retrieved.Entities[i].GetAttributeValue<AliasedValue>("Contact.birthdate").Value.ToString();
//output: 4/13/2018 12:00:00AM

DateTime DOB_formatted = DateTime.ParseExact(DOB, "MM/dd/yyyy", null);
//System.FormatException

解决方案:将对象转换为 DateTime

DateTime DOB_formatted = Convert.ToDateTime(retrieved.Entities[i].GetAttributeValue<AliasedValue>("Contact.birthdate").Value);

ParseExact() 要求完美匹配。 MM/dd/yyyy 格式字符串需要 04/13/2018,但值为 4/13/2018 12:00:00AM。您需要 M/d/yyyy hh:mm:sstt,并且您应该确认日期值没有前导零。还有an overload that takes an array of format strings,如果你不能相信数据源是一致的。

最后,根据评论,Value 的编译时类型是 Object。但是 运行 时间呢? 运行-time 类型仍然很有可能是 already 一个 DateTime 值,您需要做的就是转换它。由于 internationalization/culture 问题,转换为字符串然后重新解析回 DateTime 的成本高得惊人。避免这些转换将为计算机节省 的工作量,并且真正有助于提高性能。