CFLib.org – Common Function Library Project

customWeekNumber(date [, weekStart] [, returnFormat])

Last updated March 4, 2010

Version: 0 | Requires: ColdFusion 5 | Library: DateLib

 
Rated 0 time(s). Average Rating: 0

Description:
Returns week number of given date based on optional start-of-week day (numeric; in the range of 1 [Sunday] to 7 [Saturday]; defaults to 1). Returns either week number or, if optional third argument was passed (boolean; defaults to false), as week number and year as WW.YYYY

Return Values:
Returns a string (depends on optional argument).

Example:

view plain print about
<cfoutput>
Week number of today's date based on Saturday as first day of week: #customWeekNumber(now(), 7)#<br>
Week number, including year, of today's date based on Monday as first day of week: #customWeekNumber(now(), 2, true)#
</cfoutput>

Parameters:

Name Description Required
date date to determine week number Yes
weekStart day of week start (1-7) No
returnFormat boolean to return week number and year instead of just week number No

Full UDF Source:

view plain print about
<cfscript>
/**
 * Returns week number based on [optional] custom start of week day
 * 
 * @param date      date to determine week number  (Required)
 * @param weekStart      day of week start (1-7) (Optional)
 * @param returnFormat      boolean to return week number and year instead of just week number (Optional)
 * @return Returns a string (depends on optional argument). 
 * @author Azadi Saryev (azadi.saryev@gmail.com) 
 * @version 0, March 4, 2010 
 */

function customWeekNumber(date) {
    var firstDayOfWeek = 1;
    var theDate = createdate(year(arguments.date), month(arguments.date), day(arguments.date));
    var firstDayOfYear = createdate(year(theDate), 1, 1);
    var firstCustWeekdayOfYear = "";
    var custWeekNum = 0;
    if (arraylen(arguments) gte 2) firstDayOfWeek = arguments[2];
    if (val(firstDayOfWeek) lt 1 OR val(firstDayOfWeek) gt 7) firstDayOfWeek = 1;
    firstCustWeekdayOfYear = dateadd('d', firstDayOfWeek-dayofweek(firstDayOfYear), firstDayOfYear);
    if (datecompare(theDate, firstCustWeekdayOfYear) lt 0) {
        firstDayOfYear = createdate(year(theDate)-1, 1, 1);
        firstCustWeekdayOfYear = dateadd('d', firstDayOfWeek-dayofweek(firstDayOfYear), firstDayOfYear);
    }
    custWeekNum = ceiling(datediff('d', firstCustWeekdayOfYear, theDate)/7);
    if (NOT custWeekNum) custWeekNum = 1;
    if (arraylen(arguments) gte 3 AND arguments[3]) {
        return numberformat(custWeekNum + year(firstCustWeekdayOfYear)/(1 & repeatstring(0, len(year(firstCustWeekdayOfYear)))), '^.' & repeatstring(0, len(year(firstCustWeekdayOfYear)))); //return weeknumber and year as WW.YYYY 
    } else {
        return custWeekNum; //return weeknumber only
    }
}
</cfscript>
blog comments powered by Disqus

Search CFLib.org


Latest Additions

Tayo Akinmade Tayo Akinmade added
arrayTrim
11 day(s) ago

Will Belden Will Belden added
longTime
17 day(s) ago

James Sleeman James Sleeman added
quickSort
27 day(s) ago

Ben Forta Ben Forta added
GetHostAddress
30 day(s) ago

Top Rated

Darwan Leonardo Sitepu EksporSQLData
Rated 5.0, 16 time(s)

Darwan Leonardo Sitepu backupDatabase
Rated 5.0, 13 time(s)

Barney Boisvert indentXml
Rated 5.0, 10 time(s)

Kevin Pepperman generateSsccAsn
Rated 5.0, 4 time(s)

Created by Raymond Camden / Design by Justin Johnson