da = new SqlDataAdapter("SELECT ExitTime,EnterTime,name,[tag-id-st],[build-id],[room-no],tagType FROM Students,GateLogging WHERE GateLogging.tagType='student'", MyConn);
DateTime ss=dt.Rows[0][1];
DateTime date = DateTime.Now;
int x=date.CompareTo(ss);
这是我的代码,我在这里停止了,我无法完成
请帮我将“EnterTime”表中的值与当前时间进行比较,并在gridview中显示超过10分钟当前时间的值
答案 0 :(得分:0)
首先,找到您真正关心的日期 - 例如,它可能是
DateTime cutoff = DateTime.Now.AddMinutes(10);
(在顶部执行一次,而不是每行执行一次) - 然后只与这些进行比较,例如:
bool isOverdue = ss > cutoff;
您也可以使用GETDATE()
和DATEADD(...)
或DATEDIFF(...)
答案 1 :(得分:0)
首先,您可以更改select查询以仅返回最近10分钟的行,并且您不需要进行比较。其次,您可以使用da.Fill(dt)将结果集复制到datatable并使用dt.Select (“...”)只过滤你的行,第三个是什么问题?你可以写
DateTime now = DateTime.Now;
if (now - ss <= TimeSpan.FromMinutes(10))
{
}
答案 2 :(得分:0)
在单元测试中遇到同样的问题我写了一个AssertEx类,其中有一些不那么挑剔的断言:
public static void AreSimilar(DateTime expected, DateTime actual, TimeSpan tolerance, string message)
{
DateTime expectedMin = expected.Subtract(tolerance);
DateTime expectedMax = expected.Add(tolerance);
if (actual < expectedMin || actual > expectedMax)
{
throw new AssertFailedException(message);
}
}