0

给定 a DateTime,我想检查它.Day是否在一个数字之间,比如在 15 到 19 之间。

所以9/16/2013通过了,但9/20/2013失败了。

谢谢,

4

6 回答 6

10

包含

var date = DateTime.Now;
if (date.Day >= 15 && date.Day <= 19)
{
        return true;
}

排除

var date = DateTime.Now;
if (date.Day > 15 && date.Day < 19)
{
        return true;
}

我不是 100% 确定哪个是正确的;)

于 2013-09-10T13:57:12.647 回答
3

像这样的东西应该工作:

var date = DateTime.Now;
return (date.Day >= 15 && date.Day <= 19);

由于这只是一个范围,因此您可以使用小于或大于运算符进行比较。此外,您可以使用 >= 或 <= 运算符来包含开始或结束日期。

另一种方法基于这样一个事实,即只有一个谓词必须为真才能使日期超出范围:

var date = DateTime.Now;
return !(date.Day < 15 || date.Day > 19)
于 2013-09-10T13:58:20.970 回答
2
if((DateTime.Today.Day >= 15) && (DateTime.Today.Day <= 19))
{
    //do something
}
else
    //do something else
}
于 2013-09-10T13:58:53.583 回答
1

编辑:(由于您在图片中看到的错误(在评论中)我无法发布答案。)

private bool IsInRange(DateTime yourDate, DateTime lowestRange, DateTime highestRange) {
   return yourDate.Day >= lowestRange.Day && yourDate.Day <= highestRange.Day; 
}
于 2013-09-10T14:03:28.880 回答
0

您可以使用Day其他答案中的代码直接使用属性来检查您的日期是否在某个范围内。

MSDN

从 .NET Framework 2.0 开始,DateTime 结构包含一个 64 位字段,该字段由与 Ticks 字段连接的私有 Kind 字段组成。

因此,比较实例最有效的方法DateTime是使用Ticks属性:

DateTime dateToValidate = SomeDate();
DateTime start = SomeRangeStart();
DateTime end = SomeRangeEnd();

return start.Ticks <= dateToValidate.Ticks && dateToValidate.Ticks <= end.Ticks;
于 2013-09-10T14:06:57.700 回答
-1

要正确测试日期(天)是否在给定数字之间,您必须使用整个日期,否则如果日期到达月末,公式将失败。

AddDate下面的示例通过使用增大边界日期来增加天数(或减去天数)来检查保证金。然后检查当前日期是否在边界之间。

var now = DateTime.Now;
if(date.AddDays(-5) < now && now < date.AddDays(5))
{
   return true;
}
于 2013-09-10T13:58:46.897 回答