DateRangeFormat([startDate] [, endDate] [, format])
Last updated June 8, 2004
Version: 1 | Requires: ColdFusion MX | Library: DateLib
Description:
DateRangeFormat() accepts three arguments: a start date, an end date, and the format mask to be used. Returns a string with redundant date formatting removed ("August 3 - 11, 2003", "December 23 - August 11, 2003").
Return Values:
Returns a string.
Example:
<!--- same date --->
#DateRangeFormat(CreateDate(2003,8,3),CreateDate(2003,8,3),'long')#<br>
<!--- same month --->
#DateRangeFormat(CreateDate(2003,8,3),CreateDate(2003,8,11),'long')#<br>
<!--- same year --->
#DateRangeFormat(CreateDate(2003,6,3),CreateDate(2003,8,11),'long')#<br>
<!--- all different --->
#DateRangeFormat(CreateDate(2002,6,3),CreateDate(2003,8,11),'long')#<br>
<!--- same date --->
#DateRangeFormat(CreateDate(2003,8,3),CreateDate(2003,8,3),'short')#<br>
<!--- same month --->
#DateRangeFormat(CreateDate(2003,8,3),CreateDate(2003,8,11),'short')#<br>
<!--- same year --->
#DateRangeFormat(CreateDate(2003,6,3),CreateDate(2003,8,11),'short')#<br>
<!--- all different --->
#DateRangeFormat(CreateDate(2002,6,3),CreateDate(2003,8,11),'short')#<br>
</cfoutput>
Parameters:
| Name | Description | Required |
|---|---|---|
| startDate | Initial date. Defaults to now. | No |
| endDate | Ending date. Defaults to now. | No |
| format | Either "long" or "short". Defaults to long. | No |
Full UDF Source:
<cfscript>
/**
* Format a range of dates ("August 3 - 11, 2003").
* Small bug in last statement was losing end date. RKC
*
* @param startDate Initial date. Defaults to now. (Optional)
* @param endDate Ending date. Defaults to now. (Optional)
* @param format Either "long" or "short". Defaults to long. (Optional)
* @return Returns a string.
* @author Bryan Buchs (bbuchs@mac.com)
* @version 1, June 8, 2004
*/
function DateRangeFormat() {
var format = "long";
var longformat = "mmmm d, yyyy";
var shortformat = "m/d/yy";
var applyformat = longformat;
var startDate = now();
var endDate = now();
var startFormat = DateFormat(startDate,format);
var endFormat = DateFormat(endDate,format);
var DateRangeFormat = startFormat;
if (arrayLen(arguments) GTE 1) { startDate = arguments[1]; }
if (arrayLen(arguments) GTE 2) { endDate = arguments[2]; }
if (arrayLen(arguments) GTE 3) { format = arguments[3]; }
if(format is not "long" and format is not "short") format = "long";
if(format is not "long") applyformat = shortformat;
//case one, same month and year
if(year(startDate) is year(endDate) and month(startDate) is month(endDate)) {
startFormat = dateFormat(startDate,ReplaceNoCase(applyformat,"y","","All"));
if(format is "long") {
endFormat = dateFormat(endDate,ReplaceNoCase(applyformat,"m","","All"));
} else {
endFormat = dateFormat(endDate,applyformat);
}
} else if(year(startDate) is year(endDate)) {
//case two, same year
startFormat = DateFormat(startDate,ReplaceNoCase(applyformat,"y","","All"));
endFormat = DateFormat(endDate,applyformat);
} else {
//case three, different year and month, dont change anything
startFormat = DateFormat(startDate,applyformat);
endFormat = DateFormat(endDate,applyformat);
}
if (right(trim(startFormat),1) EQ "," or right(trim(startFormat),1) EQ "/") {
startFormat = trim(RemoveChars(startFormat,len(trim(startFormat)), 1));
}
if (arrayLen(arguments) GTE 2 AND startDate NEQ endDate) {
DateRangeFormat = startFormat & " - " & endFormat;
} else {
DateRangeFormat = dateFormat(startDate,applyformat);
}
return trim(DateRangeFormat);
}
</cfscript>
Search CFLib.org
Latest Additions
Tayo Akinmade added
arrayTrim
3 day(s) ago
Will Belden added
longTime
9 day(s) ago
James Sleeman added
quickSort
19 day(s) ago
Ben Forta added
GetHostAddress
22 day(s) ago
Top Rated
EksporSQLData
Rated 5.0, 16 time(s)
backupDatabase
Rated 5.0, 13 time(s)
indentXml
Rated 5.0, 10 time(s)
generateSsccAsn
Rated 5.0, 4 time(s)