viewed 2105 times and licensed 40 times
Computes the week number of a date - ISO, Excel and Simple standards implemented.
Excel: WEEKNUM
View version details
Contents  |
|
Group Description
This function returns the week number within the Gregorian calendar only.
There are three main standards:
| Standard | Description |
| wkn_Simple |
The simple week numbering scheme:
- week 1 starts on the 1st January of any given year
- week n+1 starts 7 days after week n
|
| wkn_Excel |
The Microsoft Excel numbering scheme:
- week 1 starts on the 1st January of any given year
- weeks also start on a Monday (resulting in short week 1's)
|
| wkn_ISO |
The ISO8601 standard that defines a week number as:
- weeks start on a Monday.
- week 1 of a given year is the one that includes the first Thursday of that year or (equivalently) the week that includes January 4th.
|
Most implementations of these systems allow a week to start on Sunday rather than on a Monday, see
Mode
The ISO 8601 solution is based on:
where all divisions are an integer (rounding down) and
d will contain the day of the week: 1 for Sunday, 2 for Monday, 3 for Tuesday, etc..
Interface
#include <codecogs/units/date/weekofyear.h>
using namespace Units::Date;
| int | weekOfYear (int nDate, weekNumStd standard=wkn_ISO, int mode=1) Computes the week number of a date - ISO, Excel and Simple standards implemented.
Excel: WEEKNUM |
Function Documentation
Computes the week number of a date using either the ISO, Excel or Simple methodologies.
References:
www.faqs.org/faqs/calendars/faq/part3/
www.phys.uu.nl/~vgent/calendar/isocalendar.htm
www.proesite.com/timex/wkcalc.htm
Example 1:
#include <stdio.h>
#include <codecogs/units/date/weekofyear.h>
#include <codecogs/units/date/dateymd.h>
#include <codecogs/units/date/date.h>
#include <codecogs/units/date/dayofweek.h>
#include <codecogs/units/date/weekday_str.h>
using namespace Units::Date;
int main()
{
printf("\n Date Simple Excel ISO ");
int adate=date("25 Dec 2002");
for(int i=0;i<20;i++)
{
int d,m,y;
dateYMD(adate+i, y, m, d);
printf("\n %2d-%2d-%d %10s %2d %2d %2d", d,m,y, weekday_str(dayOfWeek(adate+i)),
weekOfYear(adate+i, wkn_Simple, 1),
weekOfYear(adate+i, wkn_Excel, 1),
weekOfYear(adate+i, wkn_ISO, 1));
}
return 0;
}
Output:
Date Simple Excel ISO
25-12-2002 Wednesday 52 52 52
26-12-2002 Thursday 52 52 52
27-12-2002 Friday 52 52 52
28-12-2002 Saturday 52 52 52
29-12-2002 Sunday 52 53 1
30-12-2002 Monday 52 53 1
31-12-2002 Tuesday 53 53 1
1- 1-2003 Wednesday 1 1 1
2- 1-2003 Thursday 1 1 1
3- 1-2003 Friday 1 1 1
4- 1-2003 Saturday 1 1 1
5- 1-2003 Sunday 1 2 2
6- 1-2003 Monday 1 2 2
7- 1-2003 Tuesday 1 2 2
8- 1-2003 Wednesday 2 2 2
9- 1-2003 Thursday 2 2 2
10- 1-2003 Friday 2 2 2
11- 1-2003 Saturday 2 2 2
12- 1-2003 Sunday 2 3 3
13- 1-2003 Monday 2 3 3
Parameters:
| nDate | is a serial number of days from 24 November 4714 BC (1 January 4713BC in the Julian Calendar) - also known as the Julian Period. |
| standard | Default Value = wkn_ISO |
| mode | Default Value = 1 |
Authors:
- Will Bateman (Oct 2004)
Page Comments
You must login to leave a messge
Last Modified: 19 Dec 07 @ 13:43 Page Rendered: 2010-03-08 19:59:31