3

Could you tell me what is the best way to get first day of week by week number and year?

I using this code from answer

function getDateOfWeek(week, y) {
   var d = new Date("Jan 01, "+y+" 01:00:00");
   var w = d.getTime() + 604800000 * (week-1);
   var n1 = new Date(w);
   var n2 = new Date(w + 518400000);
   return {
            dateFrom:n1,
            dateTo: n2
    }
}

getDateOfWeek(1,2017) returning dates: 01.01.2017, 08.01.2017

but need : 02.01.2017, 08.01.2017

getDateOfWeek(53,2016) returning dates: 30.12.2016, 05.01.2017

but need : 26.12.2016, 01.01.2017

Can you have some idea how to fix it?

Thanks.

Daria
  • 347
  • 2
  • 5
  • 18

1 Answers1

6

You need to offset for day of the week

function getDateOfWeek(week, y) {
  var d = new Date("Jan 01, " + y + " 01:00:00");
  var dayMs = (24 * 60 * 60 * 1000);
  var offSetTimeStart = dayMs * (d.getDay() - 1);
  var w = d.getTime() + 604800000 * (week - 1) - offSetTimeStart; //reducing the offset here
  var n1 = new Date(w);
  var n2 = new Date(w + 518400000);
  return {
    dateFrom: n1,
    dateTo: n2
  }
}
console.log(getDateOfWeek(1, 2017));
console.log(getDateOfWeek(53, 2016));
gurvinder372
  • 66,980
  • 10
  • 72
  • 94
  • @Daria Thanks, please upvote and accept (you have already done) the answer that helps you so that it helps other as well. – gurvinder372 Jan 19 '18 at 12:04