javascript DateUtils收藏

DateUtils.js
Date.prototype.pattern = function(A) {
	var D = {
		"M+" : this.getMonth() + 1,
		"d+" : this.getDate(),
		"h+" : this.getHours() % 12 == 0 ? 12 : this.getHours() % 12,
		"H+" : this.getHours(),
		"m+" : this.getMinutes(),
		"s+" : this.getSeconds(),
		"q+" : Math.floor((this.getMonth() + 3) / 3),
		"S" : this.getMilliseconds()
	};
	var B = {
		"0" : "/u65e5",
		"1" : "/u4e00",
		"2" : "/u4e8c",
		"3" : "/u4e09",
		"4" : "/u56db",
		"5" : "/u4e94",
		"6" : "/u516d"
	};
	if (/(y+)/.test(A)) {
		A = A.replace(RegExp.$1, (this.getFullYear() + "")
				.substr(4 - RegExp.$1.length))
	}
	if (/(E+)/.test(A)) {
		A = A
				.replace(
						RegExp.$1,
						((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f"
								: "/u5468")
								: "")
								+ B[this.getDay() + ""])
	}
	for ( var C in D) {
		if (new RegExp("(" + C + ")").test(A)) {
			A = A.replace(RegExp.$1, (RegExp.$1.length == 1) ? (D[C])
					: (("00" + D[C]).substr(("" + D[C]).length)))
		}
	}
	return A
};
Date.prototype.isLeapYear = function() {
	return (0 == this.getYear() % 4 && ((this.getYear() % 100 != 0) || (this
			.getYear() % 400 == 0)))
};
Date.prototype.Format = function(C) {
	var B = C;
	var A = ['日','一','二','三','四','五','六'];
	B = B.replace(/yyyy|YYYY/, this.getFullYear());
	B = B.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100)
			.toString() : "0" + (this.getYear() % 100));
	B = B.replace(/MM/, this.getMonth() > 9 ? this.getMonth().toString() : "0"
			+ this.getMonth());
	B = B.replace(/M/g, this.getMonth());
	B = B.replace(/w|W/g, A[this.getDay()]);
	B = B.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : "0"
			+ this.getDate());
	B = B.replace(/d|D/g, this.getDate());
	B = B.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString()
			: "0" + this.getHours());
	B = B.replace(/h|H/g, this.getHours());
	B = B.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString()
			: "0" + this.getMinutes());
	B = B.replace(/m/g, this.getMinutes());
	B = B.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString()
			: "0" + this.getSeconds());
	B = B.replace(/s|S/g, this.getSeconds());
	return B
};
function daysBetween(A, I) {
	var B = A.substring(5, A.lastIndexOf("-"));
	var F = A.substring(A.length, A.lastIndexOf("-") + 1);
	var C = A.substring(0, A.indexOf("-"));
	var D = I.substring(5, I.lastIndexOf("-"));
	var G = I.substring(I.length, I.lastIndexOf("-") + 1);
	var E = I.substring(0, I.indexOf("-"));
	var H = ((Date.parse(B + "/" + F + "/" + C) - Date.parse(D + "/" + G + "/"
			+ E)) / 86400000);
	return Math.abs(H)
}
Date.prototype.DateAdd = function(A, B) {
	var C = this;
	switch (A) {
	case "s":
		return new Date(C.getTime() + (1000 * B));
	case "n":
		return new Date(C.getTime() + (60000 * B));
	case "h":
		return new Date(C.getTime() + (3600000 * B));
	case "d":
		return new Date(C.getTime() + (86400000 * B));
	case "w":
		return new Date(C.getTime() + ((86400000 * 7) * B));
	case "q":
		return new Date(C.getFullYear(), (C.getMonth()) + B * 3, C.getDate(), C
				.getHours(), C.getMinutes(), C.getSeconds());
	case "m":
		return new Date(C.getFullYear(), (C.getMonth()) + B, C.getDate(), C
				.getHours(), C.getMinutes(), C.getSeconds());
	case "y":
		return new Date((C.getFullYear() + B), C.getMonth(), C.getDate(), C
				.getHours(), C.getMinutes(), C.getSeconds())
	}
};
Date.prototype.DateDiff = function(A, B) {
	var C = this;
	if (typeof B == "string") {
		B = StringToDate(B)
	}
	switch (A) {
	case "s":
		return parseInt((B - C) / 1000);
	case "n":
		return parseInt((B - C) / 60000);
	case "h":
		return parseInt((B - C) / 3600000);
	case "d":
		return parseInt((B - C) / 86400000);
	case "w":
		return parseInt((B - C) / (86400000 * 7));
	case "m":
		return (B.getMonth() + 1) + ((B.getFullYear() - C.getFullYear()) * 12)
				- (C.getMonth() + 1);
	case "y":
		return B.getFullYear() - C.getFullYear()
	}
};
function StringToDate(C) {
	var A = Date.parse(C);
	var B = new Date(A);
	if (isNaN(B)) {
		var D = C.split("-");
		B = new Date(D[0], --D[1], D[2])
	}
	return B
}
function DateAdd(C, A, B) {
	switch (A) {
	case "s":
		return new Date(C.getTime() + (1000 * B));
	case "n":
		return new Date(C.getTime() + (60000 * B));
	case "h":
		return new Date(C.getTime() + (3600000 * B));
	case "d":
		return new Date(C.getTime() + (86400000 * B));
	case "w":
		return new Date(C.getTime() + ((86400000 * 7) * B));
	case "q":
		return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + B * 3, dtTmp
				.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp
				.getSeconds());
	case "m":
		return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + B, dtTmp
				.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp
				.getSeconds());
	case "y":
		return new Date((dtTmp.getFullYear() + B), dtTmp.getMonth(), dtTmp
				.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp
				.getSeconds())
	}
}
function DateDiff(A, C, B) {
	if (typeof B == "string") {
		B = StringToDate(B)
	}
	switch (A) {
	case "s":
		return parseInt((B - C) / 1000);
	case "n":
		return parseInt((B - C) / 60000);
	case "h":
		return parseInt((B - C) / 3600000);
	case "d":
		return parseInt((B - C) / 86400000);
	case "w":
		return parseInt((B - C) / (86400000 * 7));
	case "m":
		return (B.getMonth() + 1) + ((B.getFullYear() - C.getFullYear()) * 12)
				- (C.getMonth() + 1);
	case "y":
		return B.getFullYear() - C.getFullYear()
	}
}
Date.prototype.toString = function(B) {
	var A = this;
	var D = A.toLocaleDateString();
	if (B) {
		var C = ['日','一','二','三','四','五','六'];
		D += " 星期" + C[A.getDay()]
	}
	return D
};
function CheckDateTime(C) {
	var B = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;
	var A = C.match(B);
	if (A == null) {
		return false
	}
	A[2] = A[2] - 1;
	var D = new Date(A[1], A[2], A[3], A[4], A[5], A[6]);
	if (D.getFullYear() != A[1]) {
		return false
	}
	if (D.getMonth() != A[2]) {
		return false
	}
	if (D.getDate() != A[3]) {
		return false
	}
	if (D.getHours() != A[4]) {
		return false
	}
	if (D.getMinutes() != A[5]) {
		return false
	}
	if (D.getSeconds() != A[6]) {
		return false
	}
	return true
}
Date.prototype.toArray = function() {
	var A = this;
	var B = Array();
	B[0] = A.getFullYear();
	B[1] = A.getMonth();
	B[2] = A.getDate();
	B[3] = A.getHours();
	B[4] = A.getMinutes();
	B[5] = A.getSeconds();
	return B
};
Date.prototype.DatePart = function(C) {
	var A = this;
	var D = "";
	var B = ['日','一','二','三','四','五','六'];
	switch (C) {
	case "y":
		D = A.getFullYear();
		break;
	case "m":
		D = A.getMonth() + 1;
		break;
	case "d":
		D = A.getDate();
		break;
	case "w":
		D = B[A.getDay()];
		break;
	case "ww":
		D = A.WeekNumOfYear();
		break;
	case "h":
		D = A.getHours();
		break;
	case "n":
		D = A.getMinutes();
		break;
	case "s":
		D = A.getSeconds();
		break
	}
	return D
};
Date.prototype.MaxDayOfDate = function() {
	var C = this;
	var B = C.toArray();
	var E = (new Date(B[0], B[1] + 1, 1));
	var D = E.DateAdd(1, "m", 1);
	var A = DateDiff(E.Format("yyyy-MM-dd"), D.Format("yyyy-MM-dd"));
	return A
};
function StringToDate(C) {
	var A = Date.parse(C);
	var B = new Date(A);
	if (isNaN(B)) {
		var D = C.split("-");
		B = new Date(D[0], --D[1], D[2])
	}
	return B
}
function DateCompare(C, A) {
	var B = Date.parse(C) - Date.parse(A);
	if (B == 0) {
		return 0
	} else {
		if (B < 0) {
			return 1
		} else {
			if (B > 0) {
				return -1
			}
		}
	}
}
function isDate(A) {
	if (A.trim() == "") {
		return true
	}
	var C = A.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
	if (C == null) {
		return false
	}
	var B = new Date(C[1], C[3] - 1, C[4]);
	var D = (B.getFullYear() == C[1] && (B.getMonth() + 1) == C[3] && B
			.getDate() == C[4]);
	if (D == 0) {
		return false
	}
	return (D != 0)
};


使用时导入相应页面

var date = new Date();
			//后退一天
			alert(date.DateAdd('d',-1).pattern('yyyy-MM-dd'));
			//得到两个日期之间的天数
			alert(daysBetween('2014-10-11','2014-10-19'));
			//字符串转日期 
			alert(StringToDate('2014-10-11'));
			//比较时间前后
			alert(DateCompare('2014-10-11','2014-10-11'));
			

你可能感兴趣的:(JavaScript)