(ColdFusion)比较两个日期,使用结果来确定显示的内容

时间:2012-06-29 19:31:22

标签: coldfusion

我正在客户的网站上工作,如果他们需要两周或更短时间才能到期,他需要优惠券到期日更改红色。否则他们会变黑。

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

我认为可能使用DateCompareDateDiff我可以得到我想要的东西。但是当我<CFOUTPUT>比较结果时,我会收到乱码。它显示一长串51515151551,对于客户列表中的每个后续优惠券项目逐渐变得越来越小。

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

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

任何经验丰富的程序员都可以带领我走上正确的道路吗?

3 个答案:

答案 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)