2013-12-23 36 views
0

我使用下面的代碼,以顯示與進一步的細節只爲即將到來的足球比賽的鏈接:ColdFusion的MySQL的日期問題比較不同年份

<cfset todaydate = dateformat(now(), 'dd/mm/yy') /> 

<cfif #dateformat(predict.date, "dd/mm/yy")# gte todaydate> LINK </cfif> 

這工作得很好,2013年,以顯示今天和即將推出的遊戲,但它確實不適用於2014年正在玩的遊戲 。

有誰知道這個問題可能是什麼?謝謝。

+2

'DATEFORMAT()的##不需要'是** **輸出日期。如果你想對日期進行任何處理(比較等),然後使用實際的日期對象(由'createDate()'''parseDateTime()'etc)創建)。另外...如果你想*比較日期,使用'dateCompare()',而不是像'gte','eq'等比較運算符。 –

+0

只是一些有用的建議,並不是真的與你的問題有關。您的cfif聲明中不需要磅符號。當我開始使用ColdFusion時,記住何時需要使用磅符號的最佳方式是當我輸出表達式/變量或必須使用引號時。例如,否則,您可以執行 fyroc

+0

您的問題已得到解答嗎? – baynezy

回答

4

您需要比較日期對象沒有日期字符串。因此,使用dateCompare()

<cfif dateCompare(predict.date, now()) GTE 0> LINK </cfif> 
+1

..並僅比較日期,只需添加'd'參數:'' – Leigh

1

baynezy的答案是,做這件事,我的首選方法是

<cfif predict.date GTE now()> LINK </cfif> 

您可以比較2級日期的對象在一起,就像你比較2個號碼。語法比使用dateCompare

容易(我)要記住還要注意的是,當你使用cfif

+1

兩種方法之間的一個區別是'dateCompare'會隱式轉換日期對象的輸入值(如果它們不是日期對象)。因此,與'gte'不同,即使您傳入date * strings *(如OP中所示),您也可以確保獲得日期比較。無論如何,輸入值實際上應該是日期對象,但要記住一點點區別。 – Leigh

+0

@Leigh這是一個有效的點,但如果你知道這兩個變量都是日期對象,那麼這種方式也可以。 –

+0

Leigh的評論可能是真實的,但是Matt的方法在代碼可讀性方面獲得最高分。 DateCompare是我所見過的最不直觀的函數之一。 –