c# - C# 解析 DateTime 无法将字符串转换为 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 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
,并且您应该确认日值没有前导零。如果您不能相信数据源是一致的,那么还有一个采用格式字符串数组的重载。
最后,根据评论,编译时类型Value
是Object
. 但是运行时呢?运行时类型仍然很有可能已经是一个DateTime
值,您需要做的就是强制转换它。由于国际化/文化问题,转换为字符串然后重新解析回 DateTime 非常昂贵。避免这些转换将为计算机节省大量工作,并真正提高性能。
推荐阅读
- r - 基于分组和相邻变量的 NA 插补
- python - 如何在同一个单词中找到重复的单词?
- android - 首次启动 RemoteConfig 时出现问题
- c# - 如何避免列表视图中的选定项目对象命中两次?
- javascript - React:动态表生成的绑定方法
- go - 保持 MQTT Go 客户端运行
- javascript - 在 Jest 中编写单元测试时如何检查组件
- android - 我的 RecyclerView 有很多行但只显示一行?
- elasticsearch - 在 ElasticSearch 中对字符串字段区分大小写
- rxjs - `withLatestFrom` - 使用 observable 实现时抛出错误