Looping over Date Ranges
Published on August 19, 2004
By Pete Freitag
By Pete Freitag
On the CF-Talk mailing list today someone asked how to loop over a range of dates, eg from 6/1/04 to 8/6/04. Most people including myself responded that you can use DateAdd and cfloop to do this. But John Beynon posted the simplest solution:
<cfset startDate= "06/01/2004"> <cfset endDate = "08/06/2004"> <cfloop from="#startDate#" to="#endDate#" index="i"> <cfoutput>#dateformat(i, "mm/dd/yyyy")#<br /></cfoutput> </cfloop>
I didn't know you could use dates in the from
and to
attributes of cfloop. I had to try it myself, and sure enough it works. I checked the documentation and I didn't see any mention of it - learn something new everyday.
Looping over Date Ranges was first published on August 19, 2004.
The Fixinator Code Security Scanner for ColdFusion & CFML is an easy to use security tool that every CF developer can use. It can also easily integrate into CI for automatic scanning on every commit.
Try Fixinator
CFBreak
The weekly newsletter for the CFML Community
Comments
it was a surprise to me too when i tried it out after first posting the dateadd() response! I thought i'd have seen an error but it seems to work!!!
by johnb on 08/19/2004 at 2:10:22 PM UTC
and to expand on this....
<cfset startTime = CreateTime(0,0,0)>
<cfset endTime = CreateTime(23,59,59)>
<cfloop from="#startTime#" to="#endTime#" index="i" step="#CreateTimeSpan(0,0,30,0)#">
<cfoutput>#TimeFormat(i, "hh:mm tt")#<br /></cfoutput>
</cfloop>
<cfset startTime = CreateTime(0,0,0)>
<cfset endTime = CreateTime(23,59,59)>
<cfloop from="#startTime#" to="#endTime#" index="i" step="#CreateTimeSpan(0,0,30,0)#">
<cfoutput>#TimeFormat(i, "hh:mm tt")#<br /></cfoutput>
</cfloop>
by Christopher Wigginton on 08/19/2004 at 3:08:16 PM UTC
That's pretty cool Christopher!
by Pete Freitag on 08/19/2004 at 4:58:44 PM UTC
Thanks Pete, for posting this -- and maintaining it online.
by Kamil on 07/18/2011 at 1:40:04 PM UTC