可能重复:
How can I specify the latest time of day with DateTime设定时间为23:59:59
我需要比较的日期范围和我行缺失谁的日期是上比较日期,但时间高于午夜。有没有办法将上面的比较时间设置为23:59:59?
可能重复:
How can I specify the latest time of day with DateTime设定时间为23:59:59
我需要比较的日期范围和我行缺失谁的日期是上比较日期,但时间高于午夜。有没有办法将上面的比较时间设置为23:59:59?
这是一个可能的解决方案:
yourDateTime.Date.AddHours(23).AddMinutes(59).AddSeconds(59);
这工作。谢谢! –
只是希望23:59:59.500的时间没有任何问题。 –
这是在上午7:00到下午4:00之间输入的数据。唯一可能成为问题的事情不会传递给我正在使用的这个数据库。我相信我会好起来的。另一个寻找类似解决方案的人应该担心。 –
只使用比上部比较晚一天,而上部<
而不是<=
。这样,你可以得到比你指定的更晚的时间(几分之一秒)。
或者,使用DateTime.Date
属性而不是直接比较DateTime。这将“剥离”时间部分,因此您在搜索中的日期将自动被视为午夜。
是的,这个DateTime的构造函数 - http://msdn.microsoft.com/en-us/library/272ba130.aspx 允许你指定日期以及小时,分钟和秒。
为什么没有对天高比较是午夜后最后一个你感兴趣的,然后使用带有专用的比较?
DateTime upperExclusive = lastInclusive.Date.AddDays(1);
if (dateInclusive >= date && date < upperExclusive)
{
....
}
这感觉比找一天的最后一秒一个清洁的解决方案 - 除了别的,你仍然失踪的23值:59:59.500等你当前方案。
强制性插件:我不是BCL日期/时间API的粉丝。您可能希望保持Noda Time的标签 - 端口号为Joda Time。
你也可以做lastInclusive.Date.AddDays(1).AddTicks(-1)这会给你23:59:59.999999 :) –
@AdamMarshall:你可以,是的。但排他性的上限通常较为整齐。 –
如果你做一个比较,你为什么不比较第二天的开始呢?
例如,如果它是一个LINQ查询:
someList.Where(x => (currentDaysDate <= x.ItemDate) && (x.ItemDate < nextDaysDate))
如果你不担心时间可言,你可以使用Date
物业DateTime
,这只是返回的日期部分(带有设置为00:00时: 0000)
if(MyDate.Date >= StartDate.Date && MyDate.Date <= EndDate.Date)
{
//Code here
}
创建EndOfDay扩展方法
public static DateTime EndOfDay (this DateTime d)
{
return DateTime.Parse(d.ToShortDateString().Trim() + " 23:59:59");
}
DateTime.Parse()和ToShortDateString()的行为取决于当前系统区域设置。您的代码在某些非英文语言环境中会失败。 – Daniel
您是否收到来自SQL或其他数据库的日期? (你提到了行)。可能有一个具体的精度,你必须补偿。 – StingyJack