Coldfusion获取日期列表并将它们按正确的日期顺序排列

use*_*239 3 coldfusion

从数据库中抓取分隔日期并将新的日期添加到列表中,然后希望按日期的正确顺序放置所有日期.

<cfparam default="" name="newDates">
<cfloop index="tm" from="#form.arrive#" to="#form.depart#" step="#createTimespan(1,0,0,0)#">    

<cfset newDates = newDates & '#dateFormat( tm, "mm/dd/yyyy" )#,'>

</cfloop>
<cfset penddate = '#pmonthlist#, #newDates#'>
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到这个结果.

15分之7/ 2012,7/16/2012,7/17/2012,7/18/2012,7/19/2012,7/20/2012,7/21/2012,9/21/2012,9/22/2012,9/28/2012,9/29/2012,04/01/2012,04/02/2012,04/03/2012,04/04/2012,04/05/2012,04/06/2012,04/07/2012,

并使其成为正确的日期顺序.(这是我想要的结果)

04/01/2012,04/02/2012,04/03/2012,04/04/2012,04/05/2012,04/06/2012,04/07/2012,7/15/2012,7/16/2012,7/17/2012,7/18/2012,7/19/2012,7/20/2012,7/21/2012,9/21/2012,9/22/2012,9/28/2012,9 /二千〇一十二分之二十九

Hen*_*nry 8

更新:解决方案#0 - 只需使用它们进行排序arraySort(dates, 'numeric') (在Railo中不起作用),请参阅:http://www.cfgears.com/index.cfm/2010/10/7/Using-an-array-to-sort -日期

解决方案#1 - 对日期数组进行排序

  1. 使用将列表dates转换为数组ListToArray()
  2. 循环遍历数组,DateFormat()它们为YYYYMMDD
  3. ArraySort(dates, 'numeric')
  4. 再次循环日期,然后再DateFormat()回到日期M/D/YYYY
  5. ArrayToList()

解决方案#2 - 使用查询查询

  1. 如果您有一个包含日期记录的查询对象,请跳至步骤2.
  2. 将myQuery设置为QueryNew('MyDate','Date')
  3. 循环遍历日期,并使用QueryAddRow()和将它们添加到查询中QuerySetCell()
  4. 使用查询查询: SELECT MyDate FROM myQuery ORDER BY MyDate
  5. ValueList(myQuery.myDate)

解决方案#3 - 使用Java

  1. 将日期列表转换为数组
  2. 循环遍历数组,用于javacast将每个日期转换为java.util.Date
  3. 调用sort()java.util.Collections阵列上

解决方案#4 - 使用 DateCompare()

  1. 将日期列表转换为数组
  2. 编写自己的排序算法(插入排序?冒泡排序?),DateCompare()用于比较日期.

解决方案#5 - 使用DB临时表

  1. 插入临时表
  2. 选择它们 ORDER BY