2012-03-30 45 views
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#'> 

如何獲得此結果。

7/15/2012,7/16/2012,7/17/2012,7/18/2012,7/19/2012,7/20/2012,7/21/2012,9/21/2012/2012/04/2012/04/2012/04/2012/04,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 /二千○十二分之二十九

回答

8

UPDATE:方案#0 - 只用arraySort(dates, 'numeric')(在Railo不工作)對它們進行排序,請參閱:http://www.cfgears.com/index.cfm/2010/10/7/Using-an-array-to-sort-dates

解決方案#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', '日期')
  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. 日期的轉彎列表成array
  2. 寫你自己的排序算法(插入排序?冒泡排序?),使用DateCompare()來比較日期。

解決方案#5 - 使用DB臨時表

  1. 插入到一個臨時表
  2. 選擇出來用ORDER BY
+0

謝謝您的回答 – user1253239 2012-03-30 02:51:23

+0

CF實際上是足夠聰明到只使用日期arraySort()... http://www.cfgears.com/index.cfm/2010/10/7/Using-an-array-to-sort-dates但我仍然更喜歡我的解決方案# 1,因爲它更少依賴CF來巧妙地將它們排序爲日期,而不是st環。 – Henry 2012-03-30 18:23:33

+0

它看起來像是cfgears網站已關閉。如果您仍然可以訪問代碼,那麼您是否可以使用github主旨進行更新? – jinglesthula 2016-12-20 16:35:47

相關問題