/**
|
|
* Created by lcx47996 on 2017/12/25.
|
|
*/
|
|
|
|
export function dateFormat(date, format) {
|
|
if (!date || date === 0) {
|
|
return ''
|
|
}
|
|
if (!(date instanceof Date)) {
|
|
date = new Date(date)
|
|
if (date.toString() === 'Invalid Date') {
|
|
return '无效时间戳'
|
|
}
|
|
}
|
|
format = format || 'yyyy-MM-dd hh:mm:ss'
|
|
const o = {
|
|
'M+': date.getMonth() + 1, // 月份
|
|
'd+': date.getDate(), // 日
|
|
'h+': date.getHours(), // 小时
|
|
'm+': date.getMinutes(), // 分
|
|
's+': date.getSeconds(), // 秒
|
|
'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
|
|
'S': date.getMilliseconds() // 毫秒
|
|
};
|
|
if (/(y+)/.test(format)) {
|
|
format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
|
}
|
|
for (const 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;
|
|
}
|
|
|
|
function getAfterDate(after) {
|
|
var dd = new Date();
|
|
dd.setDate(dd.getDate() + after);// 获取AddDayCount天后的日期
|
|
var y = dd.getFullYear();
|
|
var m = dd.getMonth() + 1;// 获取当前月份的日期
|
|
var d = dd.getDate();
|
|
return y + '-' + m + '-' + d;
|
|
}
|
|
|
|
function getAfterDateReturnDate(datetime, after) {
|
|
if (!(datetime.type instanceof Date)) {
|
|
return datetime
|
|
}
|
|
var r = new Date(datetime.getTime())
|
|
r.setDate(datetime.getDate() + after);// 获取AddDayCount天后的日期
|
|
return r;
|
|
}
|
|
|
|
function getAfterHourReturnDate(datetime, after) {
|
|
if (!(datetime.type instanceof Date)) {
|
|
return datetime
|
|
}
|
|
var r = new Date(datetime.getTime() + after * 60 * 60 * 1000)
|
|
return r;
|
|
}
|
|
|
|
function getAfterMounth(date, after) {
|
|
var dd = new Date();
|
|
dd.setMonth(dd.getMonth() + after);// 获取AddDayCount天后的日期
|
|
var y = dd.getFullYear();
|
|
var m = dd.getMonth() + 1;// 获取当前月份的日期
|
|
var d = dd.getDate();
|
|
return y + '-' + m + '-' + d;
|
|
}
|
|
|
|
/**
|
|
* 计算2个日期相差的天数,不包含今天,如:2016-12-13到2016-12-15,相差2天
|
|
*/
|
|
function dateDiff(startDate, endDate) {
|
|
return parseInt((endDate - startDate) / 1000 / 60 / 60 / 24);// 把相差的毫秒数转换为天数
|
|
}
|
|
|
|
/**
|
|
* 计算2个日期相差的天数,包含今天,如:2016-12-13到2016-12-15,相差3天
|
|
*/
|
|
function dateDiffIncludeToday(startDate, endDate) {
|
|
return parseInt((endDate - startDate) / 1000 / 60 / 60 / 24) + 1;// 把相差的毫秒数转换为天数
|
|
}
|
|
|
|
/**
|
|
* 获取凌晨时间
|
|
* @param day
|
|
*/
|
|
export function getMorningTime(day = 0) {
|
|
if (day == null) {
|
|
return null;
|
|
}
|
|
const timeStamp = new Date(new Date().setHours(0, 0, 0, 0)).getTime();
|
|
return new Date(timeStamp + day * 86400000);
|
|
}
|
|
|
|
export function getStartEnd(length) {
|
|
const end = getMorningTime(0);
|
|
const start = getMorningTime(0);
|
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * length);
|
|
return {end, start};
|
|
}
|
|
|
|
function getTimeShort() {
|
|
const timeShort = [
|
|
{
|
|
text: '今天',
|
|
onClick(picker) {
|
|
const {end, start} = getStartEnd(0);
|
|
picker.$emit('pick', [start, end]);
|
|
}
|
|
},
|
|
{
|
|
text: '昨天',
|
|
onClick(picker) {
|
|
const time = getMorningTime(0);
|
|
time.setTime(time.getTime() - 3600 * 1000 * 24);
|
|
picker.$emit('pick', [time, time]);
|
|
}
|
|
},
|
|
{
|
|
text: '最近一周',
|
|
onClick(picker) {
|
|
const {end, start} = getStartEnd(7);
|
|
picker.$emit('pick', [start, end]);
|
|
}
|
|
}, {
|
|
text: '最近一个月',
|
|
onClick(picker) {
|
|
const {end, start} = getStartEnd(30);
|
|
picker.$emit('pick', [start, end]);
|
|
}
|
|
}, {
|
|
text: '最近三个月',
|
|
onClick(picker) {
|
|
const {end, start} = getStartEnd(90);
|
|
picker.$emit('pick', [start, end]);
|
|
}
|
|
}
|
|
];
|
|
return timeShort;
|
|
}
|
|
|
|
function getTimeShort2(){
|
|
const timeShort = [
|
|
{
|
|
text: '今天',
|
|
onClick(picker) {
|
|
const temp = new Date();
|
|
picker.$emit('pick', [new Date(temp.setHours(0, 0, 0, 0)), new Date(temp.setHours(23, 59, 59, 0))]);
|
|
}
|
|
},
|
|
{
|
|
text: '昨天',
|
|
onClick(picker) {
|
|
const temp = new Date();
|
|
temp.setTime(temp.getTime() - 3600 * 1000 * 24);
|
|
picker.$emit('pick', [new Date(temp.setHours(0, 0, 0, 0)), new Date(temp.setHours(23, 59, 59, 0))]);
|
|
}
|
|
},
|
|
{
|
|
text: '前一周',
|
|
onClick(picker) {
|
|
const start = new Date();
|
|
const end = new Date();
|
|
start.setTime(end.getTime() - 3600 * 1000 * 24 * 6);
|
|
picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]);
|
|
}
|
|
},
|
|
{
|
|
text: '这个月',
|
|
onClick(picker) {
|
|
const end = getCurrentMonthLast();
|
|
const start = getCurrentMonthFirst();
|
|
picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]);
|
|
|
|
function getCurrentMonthFirst() {
|
|
let date = new Date();
|
|
date.setDate(1);
|
|
return date;
|
|
}
|
|
|
|
// 获取当前月的最后一天
|
|
function getCurrentMonthLast() {
|
|
let date = new Date();
|
|
let currentMonth = date.getMonth();
|
|
let nextMonth = ++currentMonth;
|
|
let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
|
|
let oneDay = 1000 * 60 * 60 * 24;
|
|
|
|
return new Date(nextMonthFirstDay - oneDay);
|
|
}
|
|
}
|
|
},
|
|
{
|
|
text: '前一个月',
|
|
onClick(picker) {
|
|
const start = new Date();
|
|
const end = new Date();
|
|
start.setTime(end.getTime() - 3600 * 1000 * 24 * 29);
|
|
picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]);
|
|
}
|
|
}
|
|
]
|
|
return timeShort
|
|
}
|
|
|
|
export default {
|
|
'getAfterDate': getAfterDate,
|
|
'getAfterMounth': getAfterMounth,
|
|
'dateDiff': dateDiff,
|
|
'dateDiffIncludeToday': dateDiffIncludeToday,
|
|
'getAfterDateReturnDate': getAfterDateReturnDate,
|
|
'getAfterHourReturnDate': getAfterHourReturnDate,
|
|
getTimeShort,
|
|
getTimeShort2,
|
|
dateFormat,
|
|
getStartEnd,
|
|
getMorningTime
|
|
}
|
|
|