/* 格式化 */
Date.prototype.format_ = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)){
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o){
if (new RegExp("(" + k + ")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
}
/* 日期格式 */
Date.prototype.formatDate_ = function () {
return this.format_("yyyy-MM-dd");
}
/* 日期中文格式 */
Date.prototype.formatDateCN_ = function () {
return this.format_("yyyy年MM月dd日");
}
/* 时间格式 */
Date.prototype.formatTime_ = function () {
return this.format_("yyyy-MM-dd hh:mm:ss");
}
/* 时间中文格式 */
Date.prototype.formatTimeCN_ = function () {
return this.format_("yyyy年MM月dd日 hh时mm分ss秒");
}
/* 前num秒或后num秒 */
Date.prototype.moveSecond_ = function (num) {
return new Date(this.getTime() + num * 1000);
}
/* 前num分钟或后num分钟 */
Date.prototype.moveMinute_ = function (num) {
return new Date(this.getTime() + num * 60 * 1000);
}
/* 前num小时或后num小时 */
Date.prototype.moveHour_ = function (num) {
return new Date(this.getTime() + num * 60 * 60 * 1000);
}
/* 前num天或后num天 */
Date.prototype.moveDay_ = function (num) {
return new Date(this.getTime() + num * 24 * 60 * 60 * 1000);
}
/* 前num月或后num月 */
Date.prototype.moveMonth_ = function (num) {
return new Date(this.setMonth(this.getMonth() + num));
}
/* 前num年或后num年 */
Date.prototype.moveYear_ = function (num) {
debugger;
return new Date(this.setFullYear(this.getFullYear() + num));
}
/* 当前月的第一天 */
Date.prototype.getFirstDayOfMonth_ = function () {
return new Date(this.setDate(1));
}
/* 当前月的最后一天 */
Date.prototype.getLastDayOfMonth_ = function () {
return new Date(this.moveMonth_(1).setDate(0));
}
/* 当前月的总天数 */
Date.prototype.getTotalDayOfMonth_ = function () {
return this.getLastDayOfMonth_().getDate();
}
/* 当前天是该年的第几周 */
Date.prototype.getWeekNumOfYear_ = function () {
let firstDayOfYear = new Date(this.getFullYear(), 0, 1);
let msDiff = this.getTime() - firstDayOfYear.getTime();
let weekNum = msDiff / (7 * 24 * 60 * 60 * 1000);
return Math.ceil(weekNum);
}
/* 本月第一个周几 */
Date.prototype.getFirstWhichDayOfMonth_ = function (dayNum) {
let firstDay = this.getFirstDayOfMonth_();
let final = (8 - firstDay.getDay() + dayNum) % 7;
if(final === 0){
final = 7;
}
return new Date(this.setDate(final));
}
/* 本月最后一个周几 */
Date.prototype.getLastWhichDayOfMonth_ = function (dayNum) {
if(dayNum === 0){
dayNum = 7;
}
let lastDay = this.getLastDayOfMonth_();
let final = (lastDay.getDay() - dayNum + 7) % 7;
return new Date(this.setDate(-final));
}
/* 本月第几个周几 */
Date.prototype.getNumWhichDayOfMonth_ = function (num, dayNum) {
let firstDay = this.getFirstDayOfMonth_();
let final = (8 - firstDay.getDay() + dayNum) % 7;
if(final === 0){
final = 7;
}
return new Date(this.setDate(final + 7 * (num - 1)));
}
/* 日期之差 */
Date.prototype.minus_ = function (otherDate) {
let msDiff = Math.abs(this.getTime() - otherDate.getTime());
return {
"DAY": msDiff / (24 * 60 * 60 * 1000),
"HOUR": msDiff / (60 * 60 * 1000),
"MINUTE": msDiff / (60 * 1000),
"SECOND": msDiff / 1000,
}
}
简单例子