检查日期是否在两个日期之间

Nik*_*las 2 coldfusion coldfusion-9

在 ColdFusion 中我可以看到下面的代码,但它似乎不起作用。我想确保仅当有效的起始日期和截止日期在范围内时才应用折扣,请参见下文。

if (
  DATEDIFF("d", discount.ValidFrom(), now()) >= 0 
  AND  
  DATEDIFF("d", now(), discount.ValidTo()) <= 0
){
   // ALL OK Accept Discount
}
    else 
{
   // Discount is no Longer Valid boo!
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ton 6

尝试这个:

Today = Int(Now());

if ( Today GTE Int(discount.ValidFrom())
 AND Today LTE Int(discount.ValidTo())
   )
{
    // discount is valid
}
else
{
    // no longer valid
}
Run Code Online (Sandbox Code Playgroud)

它之所以有效,是因为日期时间基本上只是数字 - 整数/整数部分是天数,小数/小数部分是时间。

因此,应用该Int函数会将日期时间转换为全天日期,然后您只需进行简单的数字比较即可确保它在范围内。

我发现这比这些东西更具可读性和可理解性DateDiff- 事物的顺序没有混淆,我认为这是您提供的代码片段的问题(您已经切换了顺序和 lte/gte;您只想更改一个或其他)。