これは、「12-2012」が「01-12-2012」であり、31日ステップ(1か月と同じではない)を使用しているためだと思います。したがって、最後の反復では、「to」が2012年1月12日であるのに対し、2012年4月12日を探しています。この問題は次のように簡単に確認できます。
<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>
ほら、それはいつも月の最初の日です。