Looping over Date Ranges

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.

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.

Comments

johnb

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!!!

Christopher Wigginton

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>

Pete Freitag

That''s pretty cool Christopher!

Kamil

Thanks Pete, for posting this -- and maintaining it online.