0

I have a ISO date time string representing current date time: 2016-07-26T11:56:59.792Z. How do I get the [start date, end date> of the current week ?

start: 2016-07-25T00:00:00.000Z end : 2016-07-32T00:00:00.000Z

Matko
  • 3,386
  • 4
  • 21
  • 35
  • I would use http://www.datejs.com/ – Bolza Jul 26 '16 at 12:22
  • what have you tried? the question, as it is currently stated, sounds like you want people to solve your problem for you; show us what you have tried, and we will be able to guide you better! – codeling Jul 26 '16 at 12:25

2 Answers2

0

You can use function given in answers here and here.

var year = 2016;
var week = 31;
document.write("first day: " + getDateOfISOWeek(week, year) + "<br>");


function getWeekNumber(d) {
    // Copy date so don't modify original
    d = new Date(+d);
    d.setHours(0,0,0);
    // Set to nearest Thursday: current date + 4 - current day number
    // Make Sunday's day number 7
    d.setDate(d.getDate() + 4 - (d.getDay()||7));
    // Get first day of year
    var yearStart = new Date(d.getFullYear(),0,1);
    // Calculate full weeks to nearest Thursday
    var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
    // Return array of year and week number
    return [d.getFullYear(), weekNo];
}

function getDateOfISOWeek(w, y) {
    var simple = new Date(y, 0, 1 + (w - 1) * 7);
    var dow = simple.getDay();
    var ISOweekStart = simple;
    if (dow <= 4)
        ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
    else
        ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());
    return ISOweekStart;
}

and accordingly you can add 7 days to this date to get the last date. (as per the format that you need.)

Community
  • 1
  • 1
Raman Sahasi
  • 30,180
  • 9
  • 58
  • 71
0

Try this method.

var utcToday = '2016-07-26T11:56:59.792Z';

var start = startDate('2016-07-26T11:56:59.792Z');
console.log(start);
var end = endDate('2016-07-26T11:56:59.792Z');
console.log(end);

function startDate(dat){
var date = new Date(dat);  
var index = date.getUTCDay();
date.setUTCDate(date.getUTCDate()-(index-1));
date.setUTCHours('12');
date.setUTCMinutes('00');
date.setUTCSeconds('00');
date.setMilliseconds('000');
return date;
}
function endDate(dat){
var date = new Date(dat);  
var index = date.getUTCDay();
date.setUTCDate(date.getUTCDate()+(7-(index-1)));
date.setUTCHours('12');
date.setUTCMinutes('00');
date.setUTCSeconds('00');
date.setMilliseconds('000');
return date;
}
rejo
  • 3,352
  • 5
  • 27
  • 34