给定 a DateTime
,我想检查它.Day
是否在一个数字之间,比如在 15 到 19 之间。
所以9/16/2013
通过了,但9/20/2013
失败了。
谢谢,
包含
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% 确定哪个是正确的;)
像这样的东西应该工作:
var date = DateTime.Now;
return (date.Day >= 15 && date.Day <= 19);
由于这只是一个范围,因此您可以使用小于或大于运算符进行比较。此外,您可以使用 >= 或 <= 运算符来包含开始或结束日期。
另一种方法基于这样一个事实,即只有一个谓词必须为真才能使日期超出范围:
var date = DateTime.Now;
return !(date.Day < 15 || date.Day > 19)
if((DateTime.Today.Day >= 15) && (DateTime.Today.Day <= 19))
{
//do something
}
else
//do something else
}
编辑:(由于您在图片中看到的错误(在评论中)我无法发布答案。)
private bool IsInRange(DateTime yourDate, DateTime lowestRange, DateTime highestRange) {
return yourDate.Day >= lowestRange.Day && yourDate.Day <= highestRange.Day;
}
您可以使用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;
要正确测试日期(天)是否在给定数字之间,您必须使用整个日期,否则如果日期到达月末,公式将失败。
AddDate
下面的示例通过使用增大边界日期来增加天数(或减去天数)来检查保证金。然后检查当前日期是否在边界之间。
var now = DateTime.Now;
if(date.AddDays(-5) < now && now < date.AddDays(5))
{
return true;
}