(ColdFusion) Сравните две даты, используйте результат, чтобы определить, какие дисплеи
Я работаю на клиентском сайте, и ему нужны даты окончания купона, чтобы изменить красный цвет, если они истекают две недели или меньше. В противном случае они будут черными.
Сам сайт не был сделан мной. Я только начал здесь, и они хотят, чтобы я изучил ColdFusion. Поэтому я спотыкался.
Я подумал, что, возможно, используя DateCompare или DateDiff, я мог бы получить то, что хочу, Однако я получаю искаженный текст, когда я <CFOUTPUT>
результаты любого сравнения. Он отображает длинную строку 51515151551
, которая постепенно становится меньше и меньше для каждого последующего пункта купона в списке клиентов.
Сама дата купона (т.е. end_date) вызывается из базы данных Microsoft SQL. Он форматируется с помощью Dateformat: #dateformat(end_date,"m/d/yyyy")#
.
Я попытался сравнить его с Now()
, чтобы динамически определить, должна ли дата истечения срока годности быть красной. Я также пробовал форматирование Now()
, я получаю те же результаты.
Любые опытные программисты здесь могут привести меня к правильному пути?
Ответы
Ответ 1
Datediff - это то, что вы хотите. Используете ли вы правильную дату в формате даты? Вы можете использовать "ww" в течение недель или "d" в течение нескольких дней, я использовал дни в приведенном ниже примере.
<cfset CouponDate = createDate( 2012, 05, 29 ) />
<cfif DateDiff( "d", CouponDate, Now() ) GTE 14>
<cfset Expired = False />
<cfelse>
<cfset Expired = True />
</cfif>
Очевидно, вам не нужно устанавливать переменную или что-то еще, это всего лишь примерный код, чтобы заставить вашу идею работать.:)
Ответ 2
<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>
Ответ 3
Это сработало для меня:
<cfset dtdiff = query.expiry_date - Now() />
<cfif Round(dtdiff) LEQ 14>
Red
<cfelse>
Black
</cfif>
Если вы не будете использовать 14 дней с разницей во времени, вы можете использовать
Fix(dtdiff)
вместо Round(dtdiff)