// 添加秒数
Date.prototype.addSecond = function (count) {
var time = this.getTime();
time += count * 1000;
return new Date(time);
}
// 添加分钟
Date.prototype.addMinute = function (count) {
return this.addSecond(count * 60);
}
// 添加小时
Date.prototype.addHour = function (count) {
return this.addMinute(count * 60);
}
// 添加天数
Date.prototype.addDay = function (count) {
return this.addHour(count * 24);
}
// 添加月份
Date.prototype.addMonth = function (count) {
var year = this.getFullYear();
var month = this.getMonth();
var date = this.getDate();
// 计算年份
year += Math.floor((month + count) / 12);
// 计算月份
month = Math.floor((month + count) % 12);
if (month <= 0) {
month += 12;
}
// 计算天数
var dateMax = new Date(`${year}/${month + 1}/0`).getDate();
if (date > dateMax) {
date = dateMax
}
return new Date(year, month, date, this.getHours(), this.getMinutes(), this.getSeconds());
}
// 添加年份
Date.prototype.addYear = function (count) {
return this.addMonth(count * 12);
}
// 计算两个日期数据,相隔的天数
Date.prototype.dayDiff = function (date) {
if (!date) {
return 0;
}
var time = this.getTime();
var dateTime = date.getTime();
var timeDiff = time - dateTime;
var dayDiff = timeDiff / (1000 * 60 * 60 * 24);
return dayDiff;
}
// 判断日期是否是今天
Date.prototype.isToday = function (str) {
let d = new Date(str).setHours(0, 0, 0, 0);
let today = new Date().setHours(0, 0, 0, 0);
let obj = {
'-86400000': '昨天',
0: '今天',
86400000: '明天',
};
return obj[d - today] || false;
}
// 返回格式化的日期字符串,默认yyyy-MM-dd格式
// yyyy:4位数的年份
// MM:2位数的月份
// dd:2位数的日
// HH:2位数的小时数,按24小时制
// mm:2位数的分钟数
// ss:2位数的秒钟数
// ww:星期数
// w:星期数(简)
Date.prototype.format = function (fmt) {
fmt = fmt || 'yyyy-MM-dd';
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
}
if (this.getFullYear() <= 1900) {
return '';
}
let keys = {
'yyyy': this.getFullYear(),
'MM': this.getMonth() + 1,
'dd': this.getDate(),
'HH': this.getHours(),
'mm': this.getMinutes(),
'ss': this.getSeconds(),
'ww': ['周日', '周一', '周二', '周三', '周四', '周五', '周六'][this.getDay()],
'w': ['日', '一', '二', '三', '四', '五', '六'][this.getDay()]
}
for (let key in keys) {
if (new RegExp(`(${key})`).test(fmt)) {
let value = keys[key] < 10 ? ('0' + keys[key]) : keys[key];
fmt = fmt.replace(RegExp.$1, value)
}
}
return fmt
}
// 判断是否当天,若是当天则返回[时:分],若不是当天则返回[月-日]
Date.prototype.toSmartString = function () {
let time = this;
// console.log('time', time);
if (!time)
return '';
var year = time.getFullYear();
var month = time.getMonth() + 1;
var date = time.getDate();
var hour = time.getHours();
var minute = time.getMinutes();
var now = new Date();
var nowYear = now.getFullYear();
var nowMonth = now.getMonth() + 1;
var nowDate = now.getDate();
if (nowYear == year && nowMonth == month && nowDate == date) {
return `${hour.padStart(2,'0')}:${minute.padStart(2,'0')}`; // 对Number类型扩展了padStart函数,不满2位数的自动补齐
} else if (nowYear == year) {
return `${month.padStart(2,'0')}-${date.padStart(2,'0')}`;
} else {
return `${year.padStart(4,'0')}-${month.padStart(2,'0')}-${date.padStart(2,'0')}`;
}
}