设定时间为23:59:59

时间:2010-03-12 17:37:47

标签: c# datetime time

  

可能重复:
  How can I specify the latest time of day with DateTime

我需要比较一个日期范围,并且缺少的行的日期是比较日期,但时间高于午夜。有没有办法将上部比较的时间设置为23:59:59?

7 个答案:

答案 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
}