DateTime问题

时间:2017-02-14 15:16:09

标签: c# datetime

我可以发誓这是两天前工作的,现在它抛出一个例外...

我正在检查DataTable中的某些数据。我基本上计算在过去15分钟内找到某个eventID的次数。这是代码:

int startevents = trackingData
    .Select("RHEventID = 3 AND RHDateEvent > #" + now + "#" ).Length;

我正在定义'现在'就在此之前的变量 - 看起来像这样:

DateTime now = DateTime.Now.AddMinutes(-15);

然而,这会抛出 String未被识别为有效的DateTime 异常。以下是数据表中RHDateEvent列中的数据示例:

  

2017-02-14 13:58:27 PM   (编辑 - 是的,这只是列中的一个日期而不是两个日期)

那么我做错了什么?我是否需要以某种方式转换此DateTime?

3 个答案:

答案 0 :(得分:2)

我真的建议使用Linq-To-DataTable而不是旧的有限Select方法:

DateTime in15minutes = DateTime.Now.AddMinutes(15);
var matchingRows = from row in trackingData.AsEnumerable()
                   where row.Field<int>("RHEventID) == 3
                     &&  row.Field<DateTime>("RHDateEvent") > in15minutes
                   select row;

如果您现在只需要使用计数:

int matchingRowCount = matchingRows.Count();

这更具可读性,功能强大,并且支持编译时安全性。

如果您的专栏不是DateTime - 而是string - 列,则需要对其进行解析:

...
&&  DateTime.Parse(row.Field<string>("RHDateEvent"), CultureInfo.InvariantCulture) > in15minutes

答案 1 :(得分:0)

看起来日期时间重复......

2017-02-14 13:58:27 PM 2017-02-14 13:57:27 PM

而不是

2017-02-14 13:58:27 PM

答案 2 :(得分:0)

如果它是实体的linq使用

var startevents = trackingData.Where(e => e.RHEventId = 3 && e.RHDateEvent >= DateTime.Now.AddMinutes(-15)).Count();