Show week number with Javascript? Show week number with Javascript? javascript javascript

Show week number with Javascript?


Simply add it to your current code, then call (new Date()).getWeek()

<script>    Date.prototype.getWeek = function() {        var onejan = new Date(this.getFullYear(), 0, 1);        return Math.ceil((((this - onejan) / 86400000) + onejan.getDay() + 1) / 7);    }    var weekNumber = (new Date()).getWeek();    var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];    var now = new Date();    document.write(dayNames[now.getDay()] + " (" + weekNumber + ").");</script>


Consider using my implementation of "Date.prototype.getWeek", think is more accurate than the others i have seen here :)

Date.prototype.getWeek = function(){    // We have to compare against the first monday of the year not the 01/01    // 60*60*24*1000 = 86400000    // 'onejan_next_monday_time' reffers to the miliseconds of the next monday after 01/01    var day_miliseconds = 86400000,        onejan = new Date(this.getFullYear(),0,1,0,0,0),        onejan_day = (onejan.getDay()==0) ? 7 : onejan.getDay(),        days_for_next_monday = (8-onejan_day),        onejan_next_monday_time = onejan.getTime() + (days_for_next_monday * day_miliseconds),        // If one jan is not a monday, get the first monday of the year        first_monday_year_time = (onejan_day>1) ? onejan_next_monday_time : onejan.getTime(),        this_date = new Date(this.getFullYear(), this.getMonth(),this.getDate(),0,0,0),// This at 00:00:00        this_time = this_date.getTime(),        days_from_first_monday = Math.round(((this_time - first_monday_year_time) / day_miliseconds));    var first_monday_year = new Date(first_monday_year_time);    // We add 1 to "days_from_first_monday" because if "days_from_first_monday" is *7,    // then 7/7 = 1, and as we are 7 days from first monday,    // we should be in week number 2 instead of week number 1 (7/7=1)    // We consider week number as 52 when "days_from_first_monday" is lower than 0,    // that means the actual week started before the first monday so that means we are on the firsts    // days of the year (ex: we are on Friday 01/01, then "days_from_first_monday"=-3,    // so friday 01/01 is part of week number 52 from past year)    // "days_from_first_monday<=364" because (364+1)/7 == 52, if we are on day 365, then (365+1)/7 >= 52 (Math.ceil(366/7)=53) and thats wrong    return (days_from_first_monday>=0 && days_from_first_monday<364) ? Math.ceil((days_from_first_monday+1)/7) : 52;}

You can check my public repo here https://bitbucket.org/agustinhaller/date.getweek (Tests included)


In case you already use jquery-ui (specifically datepicker):

Date.prototype.getWeek = function () { return $.datepicker.iso8601Week(this); }

Usage:

var myDate = new Date();myDate.getWeek();

More here:UI/Datepicker/iso8601Week

I realize this isn't a general solution as it incurs a dependency. However, considering the popularity of jquery-ui this might just be a simple fit for someone - as it was for me.