我正在客户的网站上工作,如果他们需要两周或更短时间才能到期,他需要优惠券到期日更改红色。否则他们会变黑。
该网站本身并非由我制作。我刚开始在这里,他们希望我学习ColdFusion。所以我一直在磕磕绊绊。
我认为可能使用DateCompare或DateDiff我可以得到我想要的东西。但是当我<CFOUTPUT>
比较结果时,我会收到乱码。它显示一长串51515151551
,对于客户列表中的每个后续优惠券项目逐渐变得越来越小。
从Microsoft SQL数据库调用优惠券日期本身(即end_date)。它使用Dateformat格式化:#dateformat(end_date,"m/d/yyyy")#
。
我尝试将其与Now()
进行比较,以便动态确定过期日期是否应为红色。我也尝试过格式化Now()
,我得到了相同的结果。
任何经验丰富的程序员都可以带领我走上正确的道路吗?
答案 0 :(得分: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>
显然你不需要设置变量或任何东西,这只是一些示例代码来让你的想法发挥作用。 :)
答案 1 :(得分: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>
答案 2 :(得分:0)
这对我有用:
<cfset dtdiff = query.expiry_date - Now() />
<cfif Round(dtdiff) LEQ 14>
Red
<cfelse>
Black
</cfif>
如果您不想使用14天的时差,可以使用
Fix(dtdiff)
代替Round(dtdiff)