【问题标题】:C# Parsing DateTime Unable to Convert String to DateTimeC# 解析 DateTime 无法将字符串转换为 DateTime
【发布时间】:2020-04-15 03:43:21
【问题描述】:

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

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

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);

【问题讨论】:

  • 你能试试:DateTime.ParseExact(DOB, "MM/dd/yyyy", new CultureInfo("en-US")) 告诉我它是否有效吗?
  • 第一行的.Value 还不是日期时间吗?如果是object,你可能只需要投射它。
  • .Value 之后,它是一个对象,如果我不将它转换为字符串,它会给我一个错误
  • @Tony 谢谢你的建议,同样的错误出现了。
  • DateTime DOB = (DateTime)retrieved.Entities[i].GetAttributeValue&lt;AliasedValue&gt;("Contact.birthdate").Value;

标签: c# datetime parsing xrm


【解决方案1】:

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,如果你不能相信数据源是一致的。

最后,根据 cmets,Value 的编译时类型是 Object。但是运行时呢?运行时类型仍然很有可能已经DateTime 值,您需要做的就是强制转换它。由于国际化/文化问题,转换为字符串然后重新解析回 DateTime 非常昂贵。避免这些转换将为计算机节省 的工作量,并真正提高性能。

【讨论】:

  • 谢谢。我将它转换为 DateTime 并且它有效。将编辑我的帖子。
猜你喜欢
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
相关资源
最近更新 更多