Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
var myDate = new Date();
Date.prototype.isMonkeyPatched = true;
myDate.isMonkeyPatched; // true
// add numDays to oldDate and return resulting date
function add_days(oldDate, numDays) {
var new_date = new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+parseInt(numDays));
return new_date;
}
function add_working_days(to_date, days) {
// to_date: starting date,
// days = number of working days to add
var temp_date = new Date();
var i = 0;
var days_to_add = 0;
while (i < (days)){
temp_date = add_days(to_date, days_to_add);
//0 = Sunday, 6 = Saturday, if the date not equals a weekend day then increase by 1
if ((temp_date.getDay() != 0) && (temp_date.getDay() != 6)) {
i+=1;
}
days_to_add += 1;
}
return add_days(to_date, days_to_add);
}
function getDaysByWD(dayOfWeek, num) {
// на каждые 5 рабочих дней - полная неделя
var full = parseInt(num / 5) * 7;
// считаем остаток
var rest = num % 5;
// корректировка по выходным, пока ноль
var d = 0;
// Если суббота - то один день
if (dayOfWeek == 6) {
d = 1;
}
// а для рабочих дней
else if (dayOfWeek > 0) {
// считаем сколько дней осталось до выходных
daysToWeeknd = 6 - dayOfWeek - 1;
// если в остатке больше, чем до выходных
// то нужно посчитать ещё одну пару выходных
if (rest > daysToWeeknd) {
d = 2;
}
}
return full + rest + d;
}
function getDaysByWD(w,n,r) {
return parseInt(n/5)*7+(r=n%5)+(w>0?w<6?r>(5-w)?2:0:1:0);
}
var first = new Date(2011, 3, 1).getTime(),
second = new Date(2011, 4, 1).getTime();
console.log((second - first)/86400000);new Date(Y, M, 33) будет работать.var d = +new Date()
, thYear = d.getFullYear(), thMonth = d.getMonth()
, nextMonth = (thMonth +1) % 12, nextYear = thYear + (thMonth==11);
var daysInThMonth = (+new Date(nextYear, nextMonth, 1) - new Date(thYear, thMonth, 1))/ 86400000;
Даты в JavaScript: количество дней в месяце и некоторые особенности Safari