Embora não haja função específica ColdFusion para esse retorno, é possível construir tal funcionalidade utilizando várias funções de data do ColdFusion. Aqui está uma UDF (função definida pelo usuário), bem como um exemplo:
<cfscript> function getEveryDOW(dowlist) { var year = year(now()); var day1 = ""; var x = ""; var thisDOW = ""; var result = arrayNew(1); var initialDOW = ""; var offset = ""; if(arrayLen(arguments) gte 2) year = arguments[2]; day1 = createDate(year, 1,1); initialDOW = dayOfWeek(day1); while(year(day1) is year) { for(x=1; x lte listlen(dowlist); x=x+1) { thisDOW = listGetAt(dowlist, x); offset = thisDOW - initialDOW; dayToAdd = dateAdd("d", offset, day1 ); arrayAppend(result, dayToAdd); } day1 = dateAdd("ww", 1, day1); } return result; } </cfscript>
Exemplo:
<cfset dowList = "1,3"> <cfset dArr = getEveryDow(dowlist)> <cfdump var="#dArr#">
A UDF é um pouco complicada, então deixe-me explicar. A teoria básica por trás dela é começar com um objeto data correspondente ao início do ano. Descobrir que dia da semana que é. Então nós fazemos um loop até o final do ano. Fazemos isso usando dateAdd que nos permite saltar semana a semana. Desde que soubemos qual o dia inicial da semana, podemos achar o dia da semana desejado descobrindo um deslocamento.
by Ray Camden
Image may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.