/** * 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 }