1,获取一个标准时间是一年内的第几周:
var theWeekOfYear = function (curDate) {
/*
date1是当前日期
date2是当年第一天
d是当前日期是今年第多少天
用d + 当前年的第一天的周差距的和在除以7就是本年第几周
*/
var a = curDate.getFullYear();
var b = curDate.getMonth() + 1;
var c = curDate.getDate();
var date1 = new Date(a, parseInt(b) - 1, c), date2 = new Date(a, 0, 1),
d = Math.round((date1.valueOf() - date2.valueOf()) / 86400000);
return Math.ceil(
(d + ((date2.getDay() + 1) - 1)) / 7
);
};
2,判断两个时间是否是同一周
var subDay = function (dateTime) {
var self = {
year: 1970,
month: 1,
day: 1,
hour: 0,
minute: 0,
second: 0
};
var optTime = {
year: dateTime.getFullYear(),
month: dateTime.getMonth() + 1,
day: dateTime.getDate(),
hour: dateTime.getHours(),
minute: dateTime.getMinutes(),
second: dateTime.getSeconds()
};
var _days = 0;
var _selfBigger = false;
if (self.year > optTime.year) {
_selfBigger = true;
} else if (self.year == optTime.year) {
if (self.month > optTime.month) {
_selfBigger = true;
} else if (self.month == optTime.month) {
if (self.day > optTime.day) {
_selfBigger = true;
} else if (self.day == optTime) {
return 0;
}
}
}
var _bigDate = _.clone(self);
var _smallDate = _.clone(self);
if (_selfBigger == true) {
_bigDate.year = self.year;
_bigDate.month = self.year;
_bigDate.day = self.day;
_smallDate.year = optTime.year;
_smallDate.month = optTime.month;
_smallDate.day = optTime.day;
} else {
_bigDate.year = optTime.year;
_bigDate.month = optTime.month;
_bigDate.day = optTime.day;
_smallDate.year = self.year;
_smallDate.month = self.month;
_smallDate.day = self.day;
}
for (var i = _smallDate.year; i <= _bigDate.year - 1; i++) {
if (((i % 4 == 0) && (i % 100 == 0)) || (i % 400 == 0)) {
_days = _days + 366;
} else {
_days = _days + 365;
}
}
for (var _i = 1; _i <= _smallDate.month - 1; _i++) {
if (_i == 1 || _i == 3 || _i == 5 || _i == 7 || _i == 8 || _i == 10 || _i == 12) {
_days = _days - 31;
} else if (_i == 4 || _i == 6 || _i == 9 || _i == 11) {
_days = _days - 30
} else if (_i == 2) {
if ((_smallDate.year % 4 == 0 && _smallDate.year % 100 != 0) || (_smallDate.year % 400 == 0 )) {
_days = _days - 29
} else {
_days = _days - 28
}
}
}
_days = _days - _smallDate.day;
for (var _i = 1; _i <= _bigDate.month - 1; _i++) {
if (_i == 1 || _i == 3 || _i == 5 || _i == 7 || _i == 8 || _i == 10 || _i == 12) {
_days = _days + 31;
} else if (_i == 4 || _i == 6 || _i == 9 || _i == 11) {
_days = _days + 30;
} else if (i == 2) {
if ((_bigDate.year % 4 == 0 && _bigDate.year % 100 != 0) || (_bigDate.year % 400 == 0)) {
_days = _days + 29;
}
else {
_days = _days + 28;
}
}
}
_days = _days + _bigDate.day;
return _days
};
var sameWeek = function (curDate, lastDate) {
//var timesDiff = curDate.getTime() - lastDate.getTime();
//var daysDiff = Math.floor(timesDiff / 86400000);
var daysDiff = subDay(curDate)-subDay(lastDate);
var lastDayOfWeek = lastDate.getDay();// 1,2,3,4,5,6,7
lastDayOfWeek = (lastDayOfWeek == 0) ? 7 : lastDayOfWeek;
var lastDaysToSunday = 7 - lastDayOfWeek;
console.log("===lastDayOfWeek=",lastDayOfWeek)
console.log("===lastDaysToSunday",lastDaysToSunday)
console.log("===daysDiff",daysDiff)
return (daysDiff <= lastDaysToSunday);
};
console.log("same week:",sameWeek(new Date(),new Date(1448888587495)))