11

私はクライアントのサイトで作業していますが、有効期限が2週間以内の場合、クーポンの有効期限を赤に変更する必要があります。それ以外の場合は黒になります。

サイト自体は私が作ったものではありません。私はここから始めたばかりで、ColdFusionを学んでほしいと言われています。だから私はそれをつまずいてきました。

DateCompareやDateDiffを使えば、欲しいものが手に入るのではないかと思いました。ただし、どちらかの比較の結果を表示すると、テキストが文字化けします。顧客リストの後続のクーポンアイテムごとに、徐々に小さくなる長い文字列が表示されます。<CFOUTPUT>51515151551

クーポンの日付自体(つまりend_date)は、MicrosoftSQLデータベースから呼び出されます。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 に答える