如何使用C#语言比较LINQ查询中的当前“时间和分钟”
请任何人知道告诉我如何?
示例:这是我的时间= 08:30 与当前时间比较(9:30) 使用LINQ查询 如果是,则返回true 否则为假; 通过mohan 请。
答案 0 :(得分:2)
如果你想比较几小时和几分钟,那就这样做:
public bool CompareTimes(DateTime time1, DateTime time2)
{
return time1.Hours == time2.Hours && time1.Minutes == time2.Minutes;
}
答案 1 :(得分:1)
DateTime now=DateTime.UtcNow;//Or .Now if you *really* want to
return (now.Minutes==myTime.Minutes)&&(now.Hours==myTime.Hours);
这不是LINQ,但LINQ在这里没有任何意义,因为LINQ在序列上工作,而且这里没有序列。
请注意,我只评估DateTime.Now
/ UtcNow
一次,以避免竞争条件。这样做的另一个原因是它将时钟(代表外部可变状态)与逻辑隔离开来,以便于测试。考虑将其作为您的函数的参数。
根据myTime
的时区,您需要DateTime.UtcNow
,DateTime.Now
或更复杂的数学,涉及DateTimeOffset
和TimeZoneInfo
。
但是您将当前时间与参考时间与平等检查进行比较的整个想法可能存在缺陷。如果您的程序在该一分钟间隔内没有获得任何CPU时间,则不会注意到指定的时间已过。发生这种情况的一个例子是休眠或睡眠。另一个原因是时钟突然跳起,由于夏令时,或者只是因为它漂移得太远,而且窗户联系了NTP服务器。
答案 2 :(得分:0)
您不需要LINQ查询来比较时间。
你可以简单地做
bool equal = dateTime1.Equals(dateTime2)
如果两者相同,则true
值为false
答案 3 :(得分:0)
任何
x.Date == DateTime.Now
或
x.Date > DateTime.Now
或
(DateTime.Now - x.Date).TotalMinutes > someNumber
等
如果UtcNow
是UTC时间,请注意您可能需要x.Date
。
答案 4 :(得分:0)
if (DateTime.Now == myTime)
return true;
else return false;
基于以下评论:
return DateTime.Now == myTime;