可能重复:
How can I specify the latest time of day with DateTime
我需要比较一个日期范围,并且缺少的行的日期是比较日期,但时间高于午夜。有没有办法将上部比较的时间设置为23:59:59?
答案 0 :(得分:50)
这是一个可能的解决方案:
yourDateTime.Date.AddHours(23).AddMinutes(59).AddSeconds(59);
答案 1 :(得分:37)
为什么不将上面的比较作为之后的最后一个你感兴趣的日子,然后使用独家比较呢?
DateTime upperExclusive = lastInclusive.Date.AddDays(1);
if (dateInclusive >= date && date < upperExclusive)
{
....
}
这感觉就像找到当天的最后一秒更清洁的解决方案 - 除了其他任何东西,你仍然会错过23:59:59.500等值与你当前的计划。
强制性插件:我不是BCL日期/时间API的忠实粉丝。您可能希望密切关注Noda Time - Joda Time到.NET的端口。
答案 2 :(得分:4)
如果你进行比较,为什么不比较第二天的开始?
EG。如果是Linq查询:
someList.Where(x => (currentDaysDate <= x.ItemDate ) && (x.ItemDate < nextDaysDate))
答案 3 :(得分:4)
创建EndOfDay扩展方法
public static DateTime EndOfDay (this DateTime d)
{
return DateTime.Parse(d.ToShortDateString().Trim() + " 23:59:59");
}
答案 4 :(得分:1)
比上面的比较晚一天使用,而在上面使用<
而不是<=
。这样,您可以获得比您指定的时间更晚(几分之一秒)的时间。
或者,直接使用DateTime.Date
属性而不是DateTime进行比较。这将“剥离”时间部分,因此搜索中的日期将自动视为午夜。
答案 5 :(得分:0)
是的,这个DateTime构造函数 - http://msdn.microsoft.com/en-us/library/272ba130.aspx 允许您指定日期以及小时,分钟和秒。
答案 6 :(得分:0)
如果您根本不担心时间,可以使用Date
DateTime
属性,它只返回日期部分(时间设置为00:00:0000)< / p>
if(MyDate.Date >= StartDate.Date && MyDate.Date <= EndDate.Date)
{
//Code here
}