关于时间处理(更新中)
重大提示,js的Date会处理很多数值越界的情况,比如xx.setDate(0),内部会有容错机制,所以我下面写的某些方法完全没有意义
判断某年是否为闰年:
function isLeapYear(year) {
if (typeof year !== 'number') {
year = parseInt(year, 10);
}
if (year === NaN) return false;
if ((year % 400 === 0) || (year % 100 !== 0) && (year % 4 === 0) ) {
return true;
} else {
return false;
}
}
一年前的今天:
function oneYearBefore() {
var today = new Date(),
year = today.getFullYear(),
month = today.getMonth(),
day = today.getDate();
year--;
// 如果今天是 xxxx-02-29
if (month === 1 && day === 29) {
month = 2;
day = 1;
}
today.setFullYear(year);
today.setMonth(month);
today.setDate(day);
return today;
}
更简单的方式是:
var today = new Date(); today.setFullYear(today.getFullYear() - 1);
昨天:
function yesterday() {
var ret = new Date(),
year = ret.getFullYear(),
month = ret.getMonth(),
day = ret.getDate();
// 今天是元旦
if (month === 0 && day === 1) {
year--;
month = 11;
day = 31;
// 今天是每月的第一天
} else if (day === 1) {
month--;
// 上个月的最后一天
if (month === 1 || month === 3 || month === 5 ||
month === 7 || month === 8 || month === 10 ||
month === 12) {
day = 31;
} else if (month === 4 || month === 6 ||
month === 9 || month === 11) {
day = 30;
} else {
// 2月
if (isLeapYear(year)) {
day = 29;
} else {
day = 28;
}
}
} else {
day--;
}
ret.setFullYear(year);
ret.setMonth(month);
ret.setDate(day);
return ret;
}
更简单的方式是:
var today = new Date(); today.setDate(today.getDate() - 1);

浙公网安备 33010602011771号