11

我在一个客户的网站上工作,如果优惠券到期日期在两周或更短的时间内到期,他需要将优惠券到期日期变为红色。否则它们将是黑色的。

该网站本身不是我制作的。我刚从这里开始,他们希望我学习 ColdFusion。所以我一直在磕磕绊绊。

我想也许通过使用DateCompareDateDiff我可以得到我想要的。<CFOUTPUT>但是,当我得到任一比较的结果时,我会得到乱码。对于客户列表中的每个后续优惠券项目,它会显示一长串51515151551逐渐变小的字符串。

优惠券日期本身(即 end_date)是从 Microsoft SQL 数据库中调用的。它使用 Dateformat: 进行格式化#dateformat(end_date,"m/d/yyyy")#

我试图将其与它进行比较,Now()以便动态确定到期日期是否应为红色。我也尝试过格式化Now(),我得到了相同的结果。

这里有经验丰富的程序员可以带领我走上正确的道路吗?

4

3 回答 3

18

Datediff 是你想要的。您是否在日期差异中使用了正确的日期部分?您可以使用 'ww' 数周或 'd' 数天,我在下面的示例中使用天数。

<cfset CouponDate = createDate( 2012, 05, 29 ) />
<cfif DateDiff( "d", CouponDate, Now() ) GTE 14>
    <cfset Expired = False />
<cfelse>
    <cfset Expired = True />
</cfif>

显然,您不需要设置变量或任何东西,这只是一些示例代码,可以让您的想法生效。:)

于 2012-06-29T19:45:36.863 回答
1
<cfscript>
// setup first test date for 7 days ago
date1 = dateAdd( 'd', -7, now() );
// setup second date for 14 days ago
date2 = dateAdd( 'd', -14, now() );
// compare date 1
writeOutput( dateDiff('d', date1, now() ) & '<hr/>');
// compare date 2
writeOutput( dateDiff('d', date2, now() )  & '<hr/>');
// demonstrate use
if ( dateDiff('d', date2, now()) gte 14 ) {
    writeOutput( 'RED' );
}
</cfscript>
于 2012-06-29T19:50:17.757 回答
0

这对我有用:

<cfset dtdiff = query.expiry_date - Now() />
<cfif Round(dtdiff) LEQ 14>
    Red
<cfelse>
    Black
</cfif>

如果你不想使用 14 天的时差,你可以使用

Fix(dtdiff)代替Round(dtdiff)

于 2017-01-26T07:01:01.990 回答