C#:检查datetime.Day是否在一定范围内的有效方法?

时间:2013-09-10 13:54:38

标签: c#

鉴于DateTime,我想检查.Day是否介于一个数字之间,例如15到19之间。

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

谢谢,

6 个答案:

答案 0 :(得分: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%确定哪一个是对的;)

答案 1 :(得分:3)

这样的事情应该有效:

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

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

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

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

答案 2 :(得分:2)

if((DateTime.Today.Day >= 15) && (DateTime.Today.Day <= 19))
{
    //do something
}
else
    //do something else
}

答案 3 :(得分:1)

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

private bool IsInRange(DateTime yourDate, DateTime lowestRange, DateTime highestRange) {
   return yourDate.Day >= lowestRange.Day && yourDate.Day <= highestRange.Day; 
}

答案 4 :(得分: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;

答案 5 :(得分:-1)

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

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

var now = DateTime.Now;
if(date.AddDays(-5) < now && now < date.AddDays(5))
{
   return true;
}