【问题标题】:Why does my string not parse properly in my linq to objects query?为什么我的字符串在我的 linq to objects 查询中无法正确解析?
【发布时间】:2017-03-17 11:18:58
【问题描述】:

CreateDate(我的表中用于存储记录创建日期的字段)在我的表中存储为 nvarchar。在我的对象的 linq 中,我试图将相同的 CreateDate 解析为 DateTime 而不是字符串。为此,我尝试了:

var CompYear1 = (from p in C1Result where
DateTime.ParseExact(p.CreateDate, "MM/dd/yyyy hh:mm tt", null) >= Y1StartDate 
//throws following error

字符串未被识别为有效的日期时间。

这里是CreateDate的例子

【问题讨论】:

  • 导致错误的p 的值是多少?
  • 您确定p.CreateDate 中的日期格式正确吗?你能展示失败的示例值吗?
  • "10/13/2014 3:31 PM" 的格式不是"dd/MM/yyyy hh:mm:ss"ParseExact 确实意味着准确
  • @David 做到了。格式应为“MM/dd/yyyy hh:mm tt”。也就是说,如果您有任何影响,我强烈建议您尝试将数据库类型从 varchar 更改为 datetime。
  • 此 Linq 查询是否应用于您的 DB 对象或任何通用集合?当您尝试在 linq 查询 [On entity framework] 中操作数据时,我看到了错误,因为它使用不同的执行。

标签: c# asp.net-mvc linq asp.net-mvc-5


【解决方案1】:

试试这个:

var result = DateTime.ParseExact("10/12/2013 3:31 PM", "MM/dd/yyyy h:mm tt", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    相关资源
    最近更新 更多