Coldfusion берет список дат и размещает их в правильном порядке дат - PullRequest
3 голосов
/ 30 марта 2012

Захватывает даты с разделителями из базы данных и добавляет новые в список, затем хочет разместить все даты в правильном порядке даты.

<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,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 / 29/2012

1 Ответ

8 голосов
/ 30 марта 2012

ОБНОВЛЕНИЕ: Решение # 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 - использовать Query of Queries

  1. если у вас есть объект запроса с записями дат, перейдите к шагу 2.
  2. установить myQuery как QueryNew ('MyDate', 'Date')
  3. перебирает даты и добавляет их в запрос, используя QueryAddRow() и QuerySetCell()
  4. использовать Query of Queries: 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. написать свой собственный алгоритм сортировки (вставка sort? Bubble sort?), Используя DateCompare() для сравнения дат.

Решение № 5 - использовать временную таблицу БД

  1. вставить в временную таблицу
  2. выберите их, используя ORDER BY
...