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

时间:2012-03-30 01:32:24

标签: 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#'>

我如何才能得到这个结果。

15分之7/ 2012,7 / 16 / 2012,7 / 17 / 2012,7 / 18 / 2012,7 / 19 / 2012,7 / 20 / 2012,7 / 21 / 2012,9 /二千〇一十二分之二十一,9/22 / 2012,9 / 28/2012/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 /二千零十二分之十五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 /二千〇一十二分之二十九

1 个答案:

答案 0 :(得分:8)

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

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

  1. 使用dates
  2. ListToArray()列表转换为数组
  3. 循环播放数组,DateFormat()将其作为YYYYMMDD
  4. ArraySort(dates, 'numeric')
  5. 再次循环浏览日期,然后DateFormat()将其转回M/D/YYYY
  6. ArrayToList()
  7. 解决方案#2 - 使用查询查询

    1. 如果您有一个包含日期记录的查询对象,请跳至步骤2.
    2. 将myQuery设置为QueryNew('MyDate','Date')
    3. 循环显示日期,并使用QueryAddRow()QuerySetCell()
    4. 将其添加到查询中
    5. 使用查询查询:SELECT MyDate FROM myQuery ORDER BY MyDate
    6. ValueList(myQuery.myDate)
    7. 解决方案#3 - 使用Java

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

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

        1. 将日期列表转换为数组
        2. 使用DateCompare()编写您自己的排序算法(插入排序?冒泡排序?),以比较日期。
        3. 解决方案#5 - 使用DB临时表

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