【问题标题】:Looping over Months not displaying the last month循环月份不显示上个月
【发布时间】:2012-05-22 08:51:07
【问题描述】:

我正在尝试遍历 motnhs 之类的。

<cfloop index="i" from="05-2012" to="12-2012" step="#createTimeSpan(31, 0, 0, 0)#">
        #LSDateFormat(i, "MMM")#  
</cfloop>

但它只显示到 2012 年 11 月的月份。为了显示 2012 年 12 月,我必须输入

#LSDateFormat(i, "MMM")#  

在循环之后再次。有什么建议吗?

【问题讨论】:

    标签: coldfusion


    【解决方案1】:

    我猜这是因为“12-2012”是“01-12-2012”并且您使用的是 31 天的步长(与一个月不同)。所以最后一次迭代是在寻找 04-12-2012 而你的“to”是 01-12-2012。你可以很容易地看到这样的问题:

    <cfloop index="i" from="05-2012" to="12-2012" step="#createTimeSpan(31, 0, 0, 0)#">
        #LSDateFormat(i)#<br/>
    </cfloop>
    

    简单的解决方案是这样的:

    <cfloop index="i" from="#CreateDate(2012, 5, 1)#" to="#CreateDate(2012, 12, 31)#" step="#CreateTimeSpan(31, 0, 0, 0)#">
        #LSDateFormat(i)#<br/>
    </cfloop>
    

    另外,它看起来对我来说更具可读性。

    请注意,如果周期较长,问题可能会再次出现。最可靠的解决方案是使跨度等于 1 个月,比如说使用这样的东西:

    <cfset i = CreateDate(2012, 5, 1) />
    <cfset stop = CreateDate(2012, 12, 31) />
    <cfloop condition="i LTE stop">
        #LSDateFormat(i)#<br/>
        <cfset i = DateAdd("m",1,i)>
    </cfloop>
    

    看,它总是每月的第一天。

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 2020-04-03
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多