CFIF结构拒绝工作。始终使用第一个声明

时间:2010-08-24 15:57:07

标签: coldfusion

对不起,上面的内容有点模糊,很难说。我在我的代码中有一个简单的CFIF语句,将dateup设置为“st”,“nd”,“rd”或“th”。但是,当代码运行时,它只是将dateup设置为“ st“而没有别的。

代码如下。

     #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")#

3 个答案:

答案 0 :(得分:6)

你做不到......

cfif dateay eq 01 OR 21 OR 31

应该是......

cfif dateay eq 01 OR dateay eq 21 OR dateay eq 31

所有数字都被评估为真,所以只做OR 21就像做OR一样。

此外,ColdFusion提供了一个Day(now())函数,您可以使用它而不是dateformat。

答案 1 :(得分:3)

你的表达意味着:

if(dateday == 01)或(21)或(31)

由于21和31转换为true,条件为真。

你需要

如果日期为01或日期为21或日期为eq 31

或者

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

答案 2 :(得分:1)

OR 21正在评估为真。您需要将其更改为 - &gt; <cfif dateday eq 01 OR dateday eq 21 or dateday eq 31>

您也可以使用<cfif right( dateday , 1 ) eq 1>

“th”的变量应该是日期,你还有一个额外的。