Coldfusion CreateDate问题

时间:2012-10-31 11:49:27

标签: coldfusion

我在使用CreateDate()函数时遇到了一些问题,它只是出错了,我不明白为什么!

我正在运行此查询以获取新闻报道中的所有日期,以便我可以每月创建一个新闻档案。

<cfquery name="selectNews" datasource="#Request.dsn#">
    SELECT Month(NewsDate) AS theCount
    FROM news
    GROUP BY Month(NewsDate)
</cfquery>

然后当我输出它时,我试图以下面的格式输出它

  • 2012年8月
  • 2012年9月
  • 2012年10月

所以我使用以下代码尝试输出此列表

<ul>
<cfloop query="selectNews">
    <cfoutput>
    <cfset theDay = DateFormat(Now(), 'dd')>
        <cfset theMon = theCount>
        <cfset theYear = DateFormat(Now(), 'yyyy')>
        <li>#CreateDate(theYear, theMon, theDay)#</li>
    </cfoutput>
</cfloop>
</ul>

它适用于第一个项目,它将输出Aug 2012,但它会出错,说这个

Error Occurred While Processing Request
MONTH
对我来说,至少对我来说没用!

2 个答案:

答案 0 :(得分:1)

我的猜测是SQL Month()函数在1月份返回0,而CreateDate则在1月份返回1。

修改

<ul>
<cfloop query="selectNews">

    <cfset theDay = Day(Now())>
    <cfset theMon = #theCount#>
    <cfset theYear = Year(Now())>
    <cfoutput><li>#DateFormat(CreateDate(theYear, theMon, theDay), "mmm yyyy")#</li></cfoutput>

</cfloop>
</ul>

修改

这似乎有效但只有奇数月份

<cfset months = [1,3,5] />
<ul>
    <cfloop array="#months#" index="currentmonth">

        <cfoutput><li>#DateFormat(CreateDate(Year(Now()), currentmonth, Day(Now())), "mmm yyyy")#</li></cfoutput>

    </cfloop>
</ul>

答案 1 :(得分:0)

这是我的白痴。我正在使用DateFormat(Now(), 'dd'),这是一个巨大的愚蠢错误,因为九月只有30天。它正在运行CreateDate(2012, 09, 31),显然无效!