日期处理通用函数


var DateUtils_MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
/** 时间处理公共函数 */
function DateUtils() {}

DateUtils.prototype.toDate = function(strDate) {
if (strDate.length == 19) { // YYYY-MM-DD HH:MI:SS
var year = strDate.substring(0, 4);
var month = strDate.substring(5, 7);
var date = strDate.substring(8, 10);
var hour = strDate.substring(11, 13);
var min = strDate.substring(14, 16);
var sec = strDate.substring(17, 19);
return new Date(year, month - 1, date, hour, min, sec);
} else if (strDate.length == 10) { // "YYYY-MM-DD"
var year = strDate.substring(0, 4);
var month = strDate.substring(5, 7);
var date = strDate.substring(8, 10);
return new Date(year, month - 1, date);
} else if (strDate.length == 7) { // "YYYY-MM"
var year = strDate.substring(0, 4);
var month = strDate.substring(5, 7);
return new Date(year, month - 1);
} else if (strDate.length == 4) { // "YYYY"
var year = strDate.substring(0, 4);
return new Date(year);
} else {
alert("DateUtils.toDate(strDate) error! invalid argument(format).");
}
}

DateUtils.prototype.toString = function(date, format) {
var strDate;
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
month = (parseInt(month) < 10) ? ("0" + month) : (month);
day = (parseInt(day) < 10) ? ("0" + day ) : (day);
hour = (parseInt(hour) < 10) ? ("0" + hour) : (hour);
min = (parseInt(min) < 10) ? ("0" + min) : (min);
sec = (parseInt(sec) < 10) ? ("0" + sec) : (sec);
if ("YYYY-MM-DD HH:MI:SS" == format) {
strDate = year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec;
} else if ("YYYY-MM-DD" == format) {
strDate = year + "-" + month + "-" + day;
} else if ("YYYY-MM" == format) {
strDate = year + "-" + month;
} else if ("YYYY" == format) {
strDate = year;
} else {
alert("DateUtils.toString(date, format) error! invalid argument(format).");
}
return strDate;
}

DateUtils.prototype.getMonthDays = function(date,month) {
var year = date.getFullYear();
if (typeof month == "undefined") {
month = date.getMonth();
}
if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) {
return 29;
} else {
return DateUtils_MD[month];
}
};

DateUtils.prototype.addDays = function(dayOffset, strBaseDate) {
var date = (arguments.length == 1) ? this.toDate(this.today()) : this.toDate(strBaseDate);
date = new Date(date.getTime() + parseInt(dayOffset) * 24 * 3600 * 1000);
return this.toString(new Date(date), "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.addMonths = function(monthOffset, strBaseDate) {
var date = (arguments.length == 1) ? this.toDate(this.today()): this.toDate(strBaseDate);
var month=date.getMonth();
var cd=date.getDate();//this.getMonthDays(date,month);
var td=this.getMonthDays(date,date.getMonth() + parseInt(monthOffset));
if(cd > td){date.setDate(td);}
date.setMonth(date.getMonth() + parseInt(monthOffset));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.addMonthsForStart = function(monthOffset, strBaseDate) {
var strDate = (arguments.length == 1) ? this.today() : strBaseDate;
strDate = this.addMonths(monthOffset, strDate);
return this.firstDayOfMonth(strDate);
}

DateUtils.prototype.addMonthsForEnd = function(monthOffset, strBaseDate) {
var strDate = (arguments.length == 1) ? this.today() : strBaseDate;
strDate = this.addMonths(monthOffset, strDate);
return this.addDays(-1, this.firstDayOfMonth(strDate));
}

DateUtils.prototype.addYears = function(yearOffset, strBaseDate) {
var date = (arguments.length == 1) ? this.toDate(this.today()) : this.toDate(strBaseDate);
date.setYear(date.getYear() + parseInt(yearOffset));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.addYearsForStart = function(yearOffset, strBaseDate) {
var strDate = (arguments.length == 1) ? this.today() : strBaseDate;
strDate = this.addYears(yearOffset, strDate);
return this.firstDayOfYear(strDate);
}

DateUtils.prototype.addYearsForEnd = function(yearOffset, strBaseDate) {
var strDate = (arguments.length == 1) ? this.today() : strBaseDate;
strDate = this.addYears(yearOffset, strDate);
return this.firstDayOfYear(strDate);
}

DateUtils.prototype.sunOfWeek = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date = new Date(date - (date.getDay()) * (24 * 3600 * 1000));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.monOfWeek = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date = new Date(date - (date.getDay() - 1) * (24 * 3600 * 1000));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.tueOfWeek = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date = new Date(date - (date.getDay() - 2) * (24 * 3600 * 1000));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.wedOfWeek = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date = new Date(date - (date.getDay() - 3) * (24 * 3600 * 1000));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.turOfWeek = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date = new Date(date - (date.getDay() - 4) * (24 * 3600 * 1000));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.friOfWeek = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date = new Date(date - (date.getDay() - 5) * (24 * 3600 * 1000));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.satOfWeek = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date = new Date(date - (date.getDay() - 6) * (24 * 3600 * 1000));
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.firstDayOfMonth = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date.setDate(1);
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.lastDayOfMonth = function(strDate) {
strDate = (arguments.length == 0) ? this.today() : (strDate);
strDate = this.addMonths(1, strDate);
strDate = this.firstDayOfMonth(strDate);
strDate = this.addDays(-1, strDate);
return strDate;
}

DateUtils.prototype.firstDayOfYear = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date.setMonth(0);
date.setDate(1);
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.lastDayOfYear = function(strDate) {
var date = (arguments.length == 0) ? this.toDate(this.today()) : this.toDate(strDate);
date.setMonth(11);
date.setDate(31);
return this.toString(date, "YYYY-MM-DD HH:MI:SS");
}

DateUtils.prototype.today = function(format) {
if(getToday && typeof(getToday)=="function"){
return getToday();
}else{
if (arguments.length == 0) {
return this.toString(new Date(), "YYYY-MM-DD");
} else {
return this.toString(new Date(), format);
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值