ColdFusion UDF Library - textDateList
December 16th, 2008
«« Back to ColdFusion Library
Category:
DATE
Description:
Converts the DateTime Objects you pass to it to a natural language list of dates. Pass each DateTime as a seperate argument.
Parameters:
Returns:
Requires:
listSortDates(), listNatural(), listConsolidate()
Sample Use:
Copy to Clipboard
Category:
DATE
Description:
Converts the DateTime Objects you pass to it to a natural language list of dates. Pass each DateTime as a seperate argument.
Parameters:
- dates (DateTime, required)
A date you wish to convert to a natural language.
Returns:
Requires:
listSortDates(), listNatural(), listConsolidate()
Sample Use:
Copy to Clipboard
/*#depends: listSortDates,listNatural,listConsolidate#*/
function textDateList(dates){
var delimiter = ",";
var loop = 0;
var list = "";
var lastDate = "";
var string = "";
var mask = "mmm d yyyy";
var tempMask = "";
var count = 0;
var startMonth = 0;
var startYear = Year(Now());
var startDate = "";
var sep = "";
var date = "";
var listDelimiter = "@";
var counter = 0;
var cont = true;
if (arrayLen(arguments) gte 2)mask = arguments[2];
if (arrayLen(arguments) gte 3)delimiter = arguments[3];
dates = server.listConsolidate(dates,delimiter);
dates = server.listSortDates(dates,delimiter);
for (loop = 1; loop lte listLen(dates,delimiter); loop = incrementValue(loop)){
date = listGetAt(dates,loop,delimiter);
tempMask = mask;
if (isDate(lastDate) and month(date) eq month(lastDate))tempMask = replaceNoCase(tempMask,"m","","ALL");
if ((isDate(lastDate) and (year(date) eq year(lastDate) and loop lt listLen(dates,delimiter)) or year(date) eq year(now()) or (loop lt listLen(dates,delimiter) and year(listGetAt(dates,loop+1,delimiter)) eq year(date))))tempMask = replaceNoCase(tempMask,"y","","ALL");
tempMask = trim(tempMask);
string = dateFormat(date,tempMask);
if (loop lt listLen(dates,delimiter) and dateCompare(listGetAt(dates,loop+1,delimiter),date,"d") eq 1 and (dateDiff("d",date,listGetAt(dates,min(loop+1,listLen(dates,delimiter)),delimiter)) eq 1 or dateDiff("d",date,listGetAt(dates,min(loop+1,listLen(dates,delimiter)),delimiter)) eq 0)){
startDate = date;
cont = true;
counter = 1;
while (cont){
if (counter+loop lt listLen(dates,delimiter)){
date = listGetAt(dates,loop+counter,delimiter);
if (dateDiff("d",date,listGetAt(dates,loop+counter+1,delimiter)) gt 1){
tempMask = mask;
if (month(date) eq month(startDate))tempMask = replaceNoCase(tempMask,"m","","ALL");
if (year(date) eq year(now()) or (year(date) eq year(startDate) and year(date) eq year(listGetAt(dates,counter+loop+1,delimiter))))tempMask = replaceNoCase(tempMask,"y","","ALL");
tempMask = trim(tempMask);
if (counter eq 1){
list = listAppend(list,string,listDelimiter);
string = dateFormat(date,tempMask);
}
else{
if (month(startDate) neq month(date))sep = " - ";
else sep = "-";
string = string & sep & dateFormat(date,tempMask);
};
cont = false;
}
}
else{
date = listLast(dates,delimiter);
tempMask = mask;
if (month(date) eq month(startDate))tempMask = replaceNoCase(tempMask,"m","","ALL");
if (year(date) eq year(now()))tempMask = replaceNoCase(tempMask,"y","","ALL");
tempMask = trim(tempMask);
if (counter eq 1){
list = listAppend(list,string,listDelimiter);
string = dateFormat(date,tempMask);
}
else{
if (month(startDate) neq month(date))sep = " - ";
else sep = "-";
string = string & sep & dateFormat(date,tempMask);
}
cont = false;
}
counter = incrementValue(counter);
}
loop = loop+counter-1;
}
lastDate = date;
list = listAppend(list,string,listDelimiter);
};
return server.listNatural(list,listDelimiter);
};
// http://www.programmers.org/index.php/coldfusion-udf-library/?ckey=92&function=textDateList



