2014-11-22 2 views
0

У меня это хорошо работает в формате тегов, но я пытаюсь перенести все в cfscript. Как я могу это сделать? (По существу, она перебирает от date1 к date2, и должна быть в 15-минутных интервалах.Как я могу реплицировать этот цикл в cfscript (для использования в cf10/railo)

<cfset from=now()> 
<cfset to=dateadd("d", 1, from)> 
<cfloop from="#from#" to="#to#" index="i" step="#CreateTimeSpan(0,0,15,0)#"> 
...stuff... 
<cfloop> 

Это, как указать шаг немного, который получает меня ..

+2

В будущем вы можете найти [чит-лист CFSCRIPT [Peter Freitag]] (http://www.petefreitag.com/cheatsheets/coldfusion/cfscript/). –

ответ

2
<cfscript> 
    variables.dtNow = now(); 
    variables.dtTmrw = dateAdd('d',1,variables.dtNow); 

    do { 
    variables.dtNow = dateAdd('n',15,variables.dtNow); 
    writeOutput(variables.dtNow); 
    } while(variables.dtNow neq variables.dtTmrw); 
</cfscript> 
+0

Удивительный, это сработает! Всегда забывайте о циклах :) – Neokoenig

+0

Это не является прямым эквивалентом цикла в вопросе. –

6

@ ответа Jarede в безусловно, дает вам цикл, который выполняет ту же итерацию с теми же значениями, как ваше требование, но это на самом деле не соответствует версии тега Это ближе всего к вашему примеру:.

from = now(); 
to  = dateadd("d", 1, from); 
step = CreateTimeSpan(0,0,15,0); 
for (i=from; i <= to; i+=step){ 
    // ... stuff ... 
} 

Если вы» re приращение (или уменьшение) и значение индекса, используйте цикл for(). Если ваше условие не основано на значении индекса, используйте цикл do или while.

Как я уже говорил в комментарии выше, если вы не знакомы с CFScript, вам нужно быть. Я рекомендую внимательно прочитать это: CFScript. Это единственная полная документация CFScript, о которой я знаю.. Если вы заметили какие-либо упущения, пришлите мне запрос на тяну.

+0

Thanks Adam; Я на самом деле прошел через ваш документ, но почему-то думал, что обычный итератор i ++ допускает только числовое приращение - приятно видеть, что я был неправ! Решение выше решило мою непосредственную проблему, и это здорово, но я рад видеть, что есть прямой сценарий, эквивалентный тому, что я был после. Та! – Neokoenig

+5

Это * is * число ;-) Все три переменные, т.е. 'from/to/step', являются числами. Это объекты даты/времени, которые представлены внутренними числами. Вот почему вы можете использовать их в числовом из цикла/to. – Leigh