2010-08-24 63 views
1

對不起,以上內容有點模糊,很難說清楚。我在代碼中有一個簡單的CFIF語句,可以根據需要將dateup設置爲「st」,「nd」,「rd」或「th」。但是,當代碼運行時,它只會將dateup設置爲「 st「而沒有別的。CFIF結構拒絕工作。始終使用第一條語句

代碼如下。

 #DATEFORMAT(date, "dddd")# the #DATEFORMAT(date, "dd")# 
         <cfset dateday = #DATEFORMAT(date,"dd")#> 
         <cfif dateday eq 01 OR 21 OR 31> 
          <cfset datesup = "st"> 
         <cfelseif dateday IS 01 OR 11> 
          <cfset datesup = "nd"> 
         <cfelseif dateday IS 03 OR 23> 
          <cfset datesup = "rd">  
         <cfelse> 
          <cfset daatesup = "th">  
         </cfif> 
         #datesup# of #DATEFORMAT(date, "mmmm, yyyy")# 

回答

6

你可以做...

cfif dateday eq 01或21或31

它應該是...

CFIF dateday EQ 01或dateday EQ 21或dateday EQ 31

所有數字爲真進行評估,以便只是在做OR 21相同做或TRUE。

另外,ColdFusion提供了一個可以使用而不是dateformat的Day(now())函數。

+0

感謝您的答案,爲什麼它的評估爲真! – 2010-08-24 16:29:39

1

OR 21正在評估爲true。你需要改變它 - ><cfif dateday eq 01 OR dateday eq 21 or dateday eq 31>

你也使用<cfif right(dateday , 1) eq 1>

變量爲「日」應該是datesup,你有一個額外的一個有。

+0

感謝您爲head up ref daatesup和爲什麼它的評估爲真!非常感激。 – 2010-08-24 16:28:40

3

你的表達的意思是:

如果(dateday == 01)或(21)或(31)

由於21和31轉換爲true,則條件爲真。

你需要

如果dateday EQ 01或dateday EQ 21或dateday EQ 31

或者

如果listFind('01,21,31' ,dateday)

+0

感謝您瀏覽該鏈接的建議! – 2010-08-24 16:28:58