13,193,590 members (48,099 online)
alternative version

#### Stats

100K views
16 bookmarked
Posted 29 Apr 2003

# Javascript to find the weeknumber (Gregorian Calendar)

, 29 Apr 2003
 Rate this:
Been searching the Internet for a waterproof way to find weeknumber based on a certain date? Search no more, because here is the solution,

## Introduction

This short article reveals the javascript-way to get week-number based on a certain date. Week-number normally spans from week 1 (first week of a year) to week 52, but in the gregorian calendar some years have 53 weeks. I have myself looked around for a javascript to find weeknumber and use the gregorian calendar rules. But I could not find any. Giving up the search I started the work making the function by myself. I looked up the rules of the calendar, found a neat formel by Peter-Paul Koch, implemented it in javascript, and here it is for you all to use free of charge.

## Using the code

Since this code is not a complete project, rather just a snippet, there is no download. You just have to copy the code and paste it in your favourite editor. The function expects numeric values for year, month and day. In Javascript the months are 0 to 11, so the funtion expects that span of numbers representing the months (ex. january = 0 .... desember = 11). I didn't bother to write a code calling the function as I think it is pretty obvious how to use it.

Here it is:

```function getWeek(year,month,day){
//lets calc weeknumber the cruel and hard way :D
//Find JulianDay
month += 1; //use 1-12
var a = Math.floor((14-(month))/12);
var y = year+4800-a;
var m = (month)+(12*a)-3;
var jd = day + Math.floor(((153*m)+2)/5) +
(365*y) + Math.floor(y/4) - Math.floor(y/100) +
Math.floor(y/400) - 32045;      // (gregorian calendar)
//var jd = (day+1)+Math.Round(((153*m)+2)/5)+(365+y) +
//                 Math.round(y/4)-32083;    // (julian calendar)

//now calc weeknumber according to JD
var d4 = (jd+31741-(jd%7))%146097%36524%1461;
var L = Math.floor(d4/1460);
var d1 = ((d4-L)%365)+L;
NumberOfWeek = Math.floor(d1/7) + 1;
return NumberOfWeek;
}```

Please ask in the forum below if you need help using the function.

## Points of Interest

There are rules and ways in the Gregorian calendar that is not common all around the world. I believe USA dont use this week-number method. Consider this before implementing the function.

## History

- getWeek 1.0 released

A list of licenses authors might use can be found here

## Share

 Web Developer Norway
Tommy live in Tromsø, a city far up north in Norway. He does programming and webdevelopment for a living.

## You may also be interested in...

 First Prev Next
 Please Create a Cut & Paste WEEKLY Redirect for Non-Profit Church Site That Will Be Useful to Many Web Developers pastormom7-Sep-08 5:47 pastormom 7-Sep-08 5:47
 Curent month (monthString) nikiobicata30-Jan-08 2:26 nikiobicata 30-Jan-08 2:26
 Re: Curent month (monthString) nikiobicata31-Jan-08 11:18 nikiobicata 31-Jan-08 11:18
 Re: Curent month (monthString) tommy skaue31-Jan-08 21:45 tommy skaue 31-Jan-08 21:45
 Date kas20066-May-06 4:10 kas2006 6-May-06 4:10
 Re: Date tommy skaue7-May-06 8:43 tommy skaue 7-May-06 8:43
 A better implementation Alvaro Mendez16-Dec-05 7:52 Alvaro Mendez 16-Dec-05 7:52
 Re: A better implementation happy_she6-Apr-06 4:48 happy_she 6-Apr-06 4:48
 Re: A better implementation hrabe9-May-07 14:05 hrabe 9-May-07 14:05
 Source of formula tommy skaue9-May-03 3:59 tommy skaue 9-May-03 3:59
 Interesting facts Sire4048-May-03 22:53 Sire404 8-May-03 22:53
 Excellent article! I didn't know there was such a clever algorithm for this. For those who doesn't know: This is the ISO 8601 standard, used extensively in Europe (but not in all countries!) The first week is the first week with four consecutive days, starting with monday. The detailed logic is as follows: A year is divided into either 52 or 53 calendar weeks. A calendar week has 7 days. Monday is day 1, Sunday is day 7. The first calendar week of a year is the one containing at least 4 days. If a year is not concluded on a Sunday, either its 1-3 last days belong to next year's first calendar week or the first 1-3 days of next year belong to the present year's last calendar week. Only a year starting or concluding on a Thursday has 53 calendar weeks. Interesting sidenote: Microsoft Windows has had a bug in it's datepart function for ages, making wrong week calculations for some 53-week years. It was still in Windows 2000 server, I hope they've fixed it now. No one is perfect. Welll, there was this guy... but we killed him.
 Re: Interesting facts tommy skaue8-May-03 23:10 tommy skaue 8-May-03 23:10
 Last Visit: 31-Dec-99 18:00     Last Update: 18-Oct-17 16:15 Refresh 1

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Web04 | 2.8.171018.2 | Last Updated 30 Apr 2003
Article Copyright 2003 by tommy skaue