1

got this get week script

    var d = new Date("2015-10-19T18:29:27.359Z");
    d.setHours(0,0,0);
    d.setDate(d.getDate()+4-(d.getDay()||7));
   var week = Math.ceil((((d-new Date(d.getFullYear(),0,1))/8.64e7))/7);
console.log(week);

should return 43 (week number of 19/10) but it returns 42

var d = new Date("2015-10-26T18:29:27.359Z");

returns week 44 as it should

looks likes it jumps over week 43?

Thomas
  • 123
  • 1
  • 1
  • 12
  • 1
    Possible duplicate of [Get week of year in JavaScript like in PHP](http://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php) – kemicofa ghost Nov 01 '15 at 18:39
  • 2
    When you say *"got this week script"*, does that mean you wrote it? Or does it mean you found it somewhere on the internet and now want us to debug it for you? –  Nov 01 '15 at 18:42
  • This script is not reliable because it doesn't take into account TimeZones and changes in DST. – derpirscher May 27 '22 at 16:08

3 Answers3

0

If you check this reference:

http://www.w3schools.com/jsref/jsref_obj_date.asp

You will see it says week is zero-based

juan garcia
  • 1,326
  • 2
  • 23
  • 56
0

Instead of calculating it manually: use week input

var elm = document.createElement('input')
elm.type = 'week'
elm.valueAsDate = new Date('2015-10-19T18:29:27.359Z')
var week = elm.value.slice(6)

console.log(week)
Endless
  • 34,080
  • 13
  • 108
  • 131
0

Here's a version which will return week number from a given date in Typescript:

/** return week number from given date */
export const getWeek = (refDate?:Date|number|string) => {
    const d = new Date(refDate !== undefined ? refDate : Date.now())
    const day = (d.getDay() + 6) % 7
    d.setDate(d.getDate() - day + 3)
    const firstThursday = d.getTime()
    d.setMonth(0, 1);
    if (d.getDay() !== 4) {
        d.setMonth(0, 1 + ((4 - d.getDay()) + 7) % 7);
    }
    return 1 + Math.ceil((firstThursday - d.getTime()) / 604800000);
}

it should return correct value for the op sample:

console.log(getWeek("2015-10-19T18:29:27.359Z")) // 43
console.log('Today's week number', getWeek())
malko
  • 2,292
  • 18
  • 26