2010-08-24 5 views
1

Désolé ce qui précède est un peu vague, il est plutôt difficile à dire. J'ai une simple instruction CFIF dans mon code pour définir les dates comme étant "st", "nd", "rd" ou "th" selon le cas. Cependant, lorsque le code est exécuté, il définit simplement datesup pour être " st "et rien d'autre.CFIF La structure refuse de travailler. Toujours utilise la première déclaration

Le code est ci-dessous.

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

Répondre

6

Vous pouvez « t faire ...

cfif dateday eq 01 OU 21 OU 31

Il devrait être ...

cfif dateday eq 01 OU dateday eq 21 OU 31 dateday eq

Tous les chiffres sont évalués comme vrai si juste faire ou 21 est la même chose que faire ou vrai. En outre, ColdFusion fournit une fonction Day (now()) que vous pouvez utiliser plutôt que dateformat.

+0

Merci pour la réponse et pourquoi il évalue à vrai! –

1

L'OR 21 est évalué à vrai. Vous auriez besoin de le changer à -><cfif dateday eq 01 OR dateday eq 21 or dateday eq 31>

Vous pouvez également utiliser <cfif right(dateday , 1) eq 1>

La variable « th » devrait être datesup, vous avez un supplément de là.

+0

Merci pour le heads up ref daatesup et pourquoi il évalue à vrai! Très appréciée. –

3

Votre expression signifie:

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

Depuis 21 et 31 converti true, la condition est vraie.

Vous devez

si dateday eq 01 ou dateday eq 21 ou 31 dateday eq

Ou

si listFind ('01, 21,31' , dateday)

+0

Merci pour la listeTrouvez une idée! –