C# 日期时间问题
我可以发誓这两天前还有效,现在它抛出了一个异常 我正在检查C# 日期时间问题,c#,datetime,C#,Datetime,我可以发誓这两天前还有效,现在它抛出了一个异常 我正在检查数据表中的一些数据。我基本上是在计算在过去15分钟内找到某个eventID的次数。这是代码: int startevents = trackingData .Select("RHEventID = 3 AND RHDateEvent > #" + now + "#" ).Length; 在此之前,我定义了'now'变量,如下所示: DateTime now = DateTime.Now.AddMinutes(-15);
数据表中的一些数据。我基本上是在计算在过去15分钟内找到某个eventID
的次数。这是代码:
int startevents = trackingData
.Select("RHEventID = 3 AND RHDateEvent > #" + now + "#" ).Length;
在此之前,我定义了'now'变量,如下所示:
DateTime now = DateTime.Now.AddMinutes(-15);
但是,这会引发字符串未被识别为有效的DateTime异常。以下是datatable中RHDateEvent列中的数据示例:
2017-02-14 13:58:27下午
(编辑-是此列中只有一个日期,而不是两个)
那么我做错了什么?是否需要以某种方式转换此日期时间?看起来日期时间重复了
2017-02-14 13:58:27下午2017-02-14 13:57:27下午
而不是
2017-02-14 13:58:27下午
看起来日期时间重复了
2017-02-14 13:58:27下午2017-02-14 13:57:27下午
而不是
2017-02-14 13:58:27下午
如果是linq,请使用
var startevents = trackingData.Where(e => e.RHEventId = 3 && e.RHDateEvent >= DateTime.Now.AddMinutes(-15)).Count();
如果是linq,请使用
var startevents = trackingData.Where(e => e.RHEventId = 3 && e.RHDateEvent >= DateTime.Now.AddMinutes(-15)).Count();
我真的建议使用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;
这更具可读性、功能更强大,并且支持编译时安全性
如果列不是DateTime
,而是string
-列,则需要对其进行解析:
...
&& DateTime.Parse(row.Field<string>("RHDateEvent"), CultureInfo.InvariantCulture) > in15minutes
。。。
&&解析(row.Field(“RHDateEvent”),CultureInfo.InvariantCulture)>15分钟
我真的建议使用Linq to DataTable
而不是旧的、有限的选择方法:
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;
这更具可读性、功能更强大,并且支持编译时安全性
如果列不是DateTime
,而是string
-列,则需要对其进行解析:
...
&& DateTime.Parse(row.Field<string>("RHDateEvent"), CultureInfo.InvariantCulture) > in15minutes
。。。
&&解析(row.Field(“RHDateEvent”),CultureInfo.InvariantCulture)>15分钟
查看使用“#”作为日期分隔符可能会有问题。你试过日期前后的单引号吗。我假设,当您输出测试数据时,您显示了两个数据示例,而不是一个包含两个日期的日期字段。是的,单引号不起作用,因为它似乎无法将其识别为日期时间,并有效地忽略了查询的这一部分(如果我手动检查它,结果将不正确)。数据正确,每列只有一个日期查看使用“#”作为日期分隔符可能会有问题。你试过日期前后的单引号吗。我假设,当您输出测试数据时,您显示了两个数据示例,而不是一个包含两个日期的日期字段。是的,单引号不起作用,因为它似乎无法将其识别为日期时间,并有效地忽略了查询的这一部分(如果我手动检查它,结果将不正确)。数据正确,每栏只有一次约会我知道唉,我真懒!我知道叹息,我真懒!谢谢Tim-这看起来不错,只是它在“15分钟”变量上抛出了一个错误,例外情况是-“指定的强制转换无效”。有什么想法吗?@reviloSlater:那么看来RHDateEvent
列不是DateTime
列,而是一个string
。然后需要将其解析为DateTime
。它有什么格式?这:2017-02-14 13:58:27 PM
?是的,正确,格式与您引用的格式相同(2017-02-14 13:58:27 PM)。谢谢Tim-这看起来不错,只是它在“15分钟”变量上引发了一个错误,例外情况是-“指定的强制转换无效”。有什么想法吗?@reviloSlater:那么看来RHDateEvent
列不是DateTime
列,而是一个string
。然后需要将其解析为DateTime
。它有什么格式?此:2017-02-14 13:58:27 PM
?是的,正确,格式与您引用的格式相同(2017-02-14 13:58:27 PM)。