【发布时间】:2020-05-21 11:26:24
【问题描述】:
我收到以下错误:
System.FormatException: 'String '{ ActualInstallDate = 17/04/2020 09:06:23 }' 未被识别为有效的 DateTime。
我必须在数据库中添加 ActualInstallDate 可以为空,这就是为什么我将它转换为字符串,以“欺骗”它。解析实际安装日期时出现错误。不知道这里有什么问题。
非常感谢任何建议。
var actualInstallDates = _context.Units.Where(u => u.ID == unitID)
.Select(u => new {
u.ActualInstallDate
}).Single().ToString();
if (actualInstallDates != null)
{
DateTime actualInstallDate = DateTime.ParseExact(actualInstallDates, "dd/MM/yyyy", CultureInfo.InvariantCulture);
var nowString = DateTime.Now.ToString("dd/MM/yyyy");
DateTime now = DateTime.ParseExact(nowString, "dd/MM/yyyy", CultureInfo.InvariantCulture);
var averageWorkOver = (Math.Ceiling(Math.Ceiling(Convert.ToDecimal(now - actualInstallDate)) / 1000 * 60 * 60 * 24) / workOverList.Count).ToString();
ViewBag.AverageWorkOver = averageWorkOver;
}
[Column(TypeName = "datetime2")]
[Display(Name = "ActualInstallDate", Description = "ActualInstallDate_Description", ResourceType = typeof(Resource.Models.Unit))]
public DateTime? ActualInstallDate { get; set; }
【问题讨论】:
-
你的日期字符串是
17/04/2020 09:06:23,你的格式是dd/MM/yyyy,它们不匹配。格式缺少时间。 -
可以添加
Units类定义吗? -
问题中的代码是否会产生此错误?请注意,您在没有文化和 ParseExact 的情况下调用 ToString,这可能是问题的根源吗?另外,你为什么要这样做?将 DateTime 转换为字符串,然后返回?为什么?
-
@jira 我也试过 "dd/MM/yyyy HH:mm:ss" 但没有用
-
@LasseV.Karlsen 因为 ActualInstallDate 是 DateTime?所以要使用它 (DateTime.Now - actualInstallDate) 不起作用,因为它们是不同的类型,所以我这样做是为了基本上将它转换为 DateTime。
标签: c# datetime parsing formatexception