2

我在使用该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

至少对我来说,这没用!

4

2 回答 2

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>
于 2012-10-31T11:55:34.843 回答
0

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

于 2012-10-31T12:23:22.340 回答