Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期时间问题_C#_Datetime - Fatal编程技术网

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