对于ColdFusion,我想使用cfswitch语句为一年中的每个季节提供不同的代码。例如,为冬天显示<p>Winter</p>
,为夏天显示<p>Summer</p>
等。达到此目的的最佳方法是什么?
答案 0 :(得分:0)
只需定义您的季节开始时间,并在应用程序启动时检查它。
我认为把它放在onSessionStart上是有道理的。
答案 1 :(得分:0)
从技术上讲,季节正式开始和结束的日期vary from year to year。如果您需要准确,您可以使用包含每个季节的日期范围的外部属性文件(以便于年度维护)。如果您不需要那么精确,您可以使用近似日期对日期范围进行硬编码,例如:夏季将于6月21日开始。加载页面或会话开始时,使用Now()
获取当前日期,并将其与日期范围进行比较,以找出它对应的季节。
答案 2 :(得分:0)
使用getSeason()方法创建一个season.cfc组件,该方法始终返回当前季节。您可以为各种季节的开始和结束编写getter和setter。或者创建一个从xml或配置文件字符串中检索季节日期的函数。
<cfscript>
function getSeason(){
var currentdatetime = DateFormat(now(), "MMDD");
var season = "";
// Spring
var springbegin = "0321";
var springend = "0620";
// Sommer
var summerbegin = "0621";
var summerend = "0922";
// Fall
var fallbegin = "0923";
var fallend = "1220";
// Winter begin of year
var winter1begin = "0101";
var winter1end = "0320";
// Winter end of year
var winter2begin = "1221";
var winter2end = "1231";
if ((currentdatetime gte springbegin) and (currentdatetime lte springend)){
season = "spring";
} else if ((currentdatetime gte summerbegin) and (currentdatetime lte summerend)){
season = "summer";
} else if ((currentdatetime gte fallbegin) and (currentdatetime lte fallend)){
season = "fall";
} if ((currentdatetime gte winter1begin) and (currentdatetime lte winter1end)){
season = "winter";
} if ((currentdatetime gte winter2begin) and (currentdatetime lte winter2end)){
season = "winter";
}
return season;
}
</cfscript>
<cfset currentseason = getSeason()>
定义文字。
<cfset seasonText = structNew()>
<cfset seasonText["winter"] = "Winter">
<cfset seasonText["spring"] = "Spring">
<cfset seasonText["summer"] = "Summer">
<cfset seasonText["fall"] = "Fall">
这是您在视图中的内容
<p>#seasonText[currentseason]#</p>
您还可以使用此技术显示不同的图像,具体取决于季节。
答案 3 :(得分:0)
使用提供的代码,我能够创建我想要的cfswitch语句。这是一个例子:
<cfswitch expression="#getSeason()#">
<cfcase delimiters="," value="Winter">
<p>Winter Edition</p>
<p><img src="/images/winterPhoto.jpg" alt="Winter Image" /></p>
</cfcase>
<cfcase delimiters="," value="Spring">
<p>Spring Edition</p>
<p><img src="/images/springPhoto.jpg" alt="Spring Image" /></p>
</cfcase>
<cfcase delimiters="," value="Summer">
<p>Summer Edition</p>
<p><img src="/images/summerPhoto.jpg" alt="Summer Image" /></p>
</cfcase>
<cfcase delimiters="," value="Fall">
<p>Fall Edition</p>
<p><img src="/images/fallPhoto.jpg" alt="Fall Image" /></p>
</cfcase>
<cfdefaultcase>
<p><img src="/images/neutralPhoto.jpg" alt="Neutral Image" /></p>
</cfdefaultcase>
</cfswitch>
这使我能够获得一年中每个季节所需的任何代码。我没有找到确切的日期。几天之后,这需要额外的工作和维护。非常感谢大家的帮助。