JS 日期操作类

时间:2024-06-09 22:33:38

/* 日期对象格式化为指定日期格式 */
Date.prototype.format = function (format) {
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o) if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
}
/*
*参数
*dateObj
* 必选项。任意 Date 对象。
*interval
* 必选项。字符串表达式,表示要添加的时间间隔。有关数值,请参阅“设置”部分。
*number
* 必选项。数值表达式,表示要添加的时间间隔的个数。数值表达式可以是正数(得到未来的日期)或负数(得到过去的日期)。
*interval 参数可以有以下值:
*设置 描述
*y 年
*q 季度
*m 月
*d 日
*w 周
*h 小时
*n 分钟
*得到日期年月日等加数字后的日期
*/
Date.prototype.dateAdd = function (interval, number) {
var d = this;
var k = { 'y': 'FullYear', 'q': 'Month', 'm': 'Month', 'w': 'Date', 'd': 'Date', 'h': 'Hours', 'n': 'Minutes', 's': 'Seconds', 'ms': 'MilliSeconds' };
var n = { 'q': 3, 'w': 7 };
eval('d.set' + k[interval] + '(d.get' + k[interval] + '()+' + ((n[interval] || 1) * number) + ')');
return d;
}

/* 计算两日期相差的日期年月日等 */
Date.prototype.dateDiff = function (interval, objDate2) {
var d = this, i = {}, t = d.getTime(), t2 = objDate2.getTime();
i['y'] = objDate2.getFullYear() - d.getFullYear();
i['q'] = i['y'] * 4 + Math.floor(objDate2.getMonth() / 4) - Math.floor(d.getMonth() / 4);
i['m'] = i['y'] * 12 + objDate2.getMonth() - d.getMonth();
i['ms'] = objDate2.getTime() - d.getTime();
i['w'] = Math.floor((t2 + 345600000) / (604800000)) - Math.floor((t + 345600000) / (604800000));
i['d'] = Math.floor(t2 / 86400000) - Math.floor(t / 86400000);
i['h'] = Math.floor(t2 / 3600000) - Math.floor(t / 3600000);
i['n'] = Math.floor(t2 / 60000) - Math.floor(t / 60000);
i['s'] = Math.floor(t2 / 1000) - Math.floor(t / 1000);
return i[interval];
}
/* 日期字符串转化为日期对象 */
function parseDate(str) {

if (typeof str == 'string') {
var results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);
if (results && results.length > 3)
return new Date(Number(results[1]), Number(results[2]) - 1, Number(results[3]));
results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/);
if (results && results.length > 6)
return new Date(Number(results[1]), Number(results[2]) - 1, Number(results[3]), Number(results[4]), Number(results[5]), Number(results[6]));
results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/);
if (results && results.length > 7)
return new Date(Number(results[1]), Number(results[2]) - 1, Number(results[3]), Number(results[4]), Number(results[5]), Number(results[6]), Number(results[7]));

}
return null;
}

//function rain() {
// obj1 = new Date().format("yyyy-MM-dd hh:mm:ss");
// obj2 = new Date().format("yyyy-MM-dd");
// obj3 = new Date().format("yyyy/MM/dd");
// obj4 = new Date().format("MM/dd/yyyy");
// obj5 = new Date().format("yyyy-MM-dd hh:mm");
// alert("obj1=" + obj1 + "/n obj2=" + obj2 + "/n obj3=" + obj3 + "/n obj4=" + obj4);
// alert(obj5);
// var str = "2010-1-10 22:10:10";
// var dates = parseDate(str);
// alert(dates.getDate());
// obj7 = dates.format("yyyy-MM-dd");
// alert(obj7);
//}
//rain();