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:
  1. 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
  1. No comments yet.
  1. No trackbacks yet.