List of utility methods to do Week Calculate
getDateOfISOWeek(w, y)Date.prototype.getDateOfISOWeek = function (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; }; | |
getDayofWeek()var daysOfWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; Date.prototype.getDayofWeek = function() { return daysOfWeek[this.getDay()]; | |
getFirstDayOfWeek()Date.prototype.getFirstDayOfWeek = function() "use strict"; var temp = new Date(this.getTime()); var distance = (temp.getDay()-1).mod(7); return new Date(this.getTime() - (distance * 86400000)); }; | |
getFullWeek()Date.prototype.getFullWeek = function(){ var jan1, w, d = new Date(this); d.setDate(d.getDate()+4-(d.getDay()||7)); jan1 = new Date(d.getFullYear(),0,1); w = Math.ceil((((d-jan1)/86400000)+1)/7); return {y: d.getFullYear(), w: w }; }; Date.prototype.getWeek = function(){ return this.getFullWeek().w; }; var getWeeksInYear = function(y){ return new Date(y,11,28).getFullWeek().w; }; ... | |
getRealWeek()Date.prototype.getRealWeek = function() var monday = this; if (monday.getDay() < 1) { monday = monday.clone().next().monday(); return monday.getWeek(); }; | |
getStudyWeek()Date.prototype.getStudyWeek = function () { var inc = (this.getDay() == 6) ? 1 : 0; return this.getWeek() + inc; }; | |
moveToBeginOfWeek(weekStart)Date.prototype.moveToBeginOfWeek = function(weekStart) if (this.getDay() != weekStart) { this.moveToDayOfWeek(weekStart, -1); return this; }; | |
moveToEndOfWeek(weekStart)Date.prototype.moveToEndOfWeek = function(weekStart) var weekEndDay = weekStart + 6; if (weekEndDay > 6) { weekEndDay -= 7; if (this.getDay() != weekEndDay) { this.moveToDayOfWeek(weekEndDay, 1); return this; }; | |
offsetByWeek(offset)Date.prototype.offsetByWeek = function(offset) { this.setTime(this.getTime() + offset * (7 * 24 * 60 * 60 * 1000)); return this; }; | |
subWeeks(value)Date.prototype.subWeeks = function(value) { this.subDays(value * 7); return this; }; |