鉴于DateTime
,我想检查.Day
是否介于一个数字之间,例如15到19之间。
所以9/16/2013
通过,但9/20/2013
失败。
谢谢,
答案 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;
}