Como recuperar datas para dias específicos da semana para todos os meses do ano?
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.
0 responses to “Como recuperar datas para dias específicos da semana para todos os meses do ano?”