import { TIME_FORMAT, REFRESH_TIME } from '../consts'; const PER_SECOND = 1 * 1000; const PER_DAY = 24 * 60 * 60; const PER_MINUTE = 60; const PER_HOUR = 60 * 60; export function getSeconds(time: Date) { return Math.floor(time.getTime() / PER_SECOND); } export function nowSeconds() { return Math.floor(Date.now() / PER_SECOND ); } export function getTodayZeroPoint(hour = REFRESH_TIME) { var date = new Date(); date.setHours(hour); date.setMinutes(0); date.setSeconds(0); var time = Math.floor(date.getTime() / PER_SECOND); return time; } export function checkTodayTime(seasonEndTime: number) { if (seasonEndTime - nowSeconds() <= PER_DAY) { return true; } return false; } export function getBeforeDayDate(day: number) { let time = getTodayZeroPoint() - day * PER_DAY; return time; } /** * 获取几天以前(按秒获取) * @param day 几天以前 */ export function getBeforeDaySeconds(day: number) { let time = nowSeconds() - day * PER_DAY; return time; } export function getBeforeHourSeconds(hour: number) { let time = nowSeconds() - hour * PER_HOUR; return time; } export function getBeforeMinuteSeconds(minute: number) { let time = nowSeconds() - minute * PER_MINUTE; return time; } export function getBeforeSeconds(seconds: number) { let time = nowSeconds() - seconds; return time; } export function getCurWeekDate(day: number, hour: number) { return getWeekDate(new Date(), day, hour); } export function getWeekDate(now: Date, day: number, hour: number){ //获得本周的开端日期 var nowDayOfWeek = now.getDay(); if(nowDayOfWeek == 0) nowDayOfWeek = 7; let nowDay = now.getDate(); let nowYear = now.getFullYear(); //当前年 let nowMonth = now.getMonth(); //月 return new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + day, hour); }; export function getCurWeekTime(day: number, hour: number) { let data = getWeekDate(new Date(), day, hour); return Math.floor(data.getTime()/PER_SECOND); } export function getCurMonthDate(day: number, hour: number) { return getMonthDate(new Date(), day, hour); } export function getCurMonthTime(day: number, hour: number) { let data = getMonthDate(new Date(), day, hour); return Math.floor(data.getTime()/PER_SECOND); } /** * @description 获取某个时间的当月的某一天的某一时 * @param {{Date}} now 时间 * @param {{number}} day 哪天 * @param {{number}} hour 几点 */ export function getMonthDate(now: Date, day: number, hour: number){ //获得本周的开端日期 let nowYear = now.getFullYear(); //当前年 let nowMonth = now.getMonth(); //月 return new Date(nowYear, nowMonth, day, hour); }; export function getHourPoint(hour: number) { var date = new Date(); date.setHours(hour); date.setMinutes(0); date.setSeconds(0); var time = Math.floor(date.getTime() / PER_SECOND); if (nowSeconds() < time) { return time - PER_DAY; } return time; } export function getCurHourPoint(hour: number, minute: number = 0, seconds: number = 0) { var date = new Date(); date.setHours(hour); date.setMinutes(minute); date.setSeconds(seconds); var time = Math.floor(date.getTime() / PER_SECOND); return time; } /** * 获取第2天凌晨几点的时间戳 * @param hour */ export function getNextHourPoint(hour: number) { var date = new Date(); date.setHours(hour); date.setMinutes(0); date.setSeconds(0); var time = Math.floor(date.getTime() / PER_SECOND); if (nowSeconds() > time) { return time + PER_DAY; } return time; } export function getTodayZeroDate(hour = 0) { var date = new Date(); date.setHours(hour); date.setMinutes(0); date.setSeconds(0); return date; } export function getZeroDateByDeltaDay(delta: number) { var date = new Date(new Date().getTime() + delta * PER_DAY * PER_SECOND); date.setHours(0); date.setMinutes(0); date.setSeconds(0); return date; } export function getAge(birthday: string) { let d = new Date(birthday + ' 00:00:00'); let _year = d.getFullYear(); let _month = d.getMonth() + 1; let _day = d.getDate(); let age = 0; let now = new Date(); let year = now.getFullYear(); let month = now.getMonth() + 1; let day = now.getDate(); if (year >= _year && month >= _month && day >= _day) { age = year - _year; }else{ age = year - _year - 1; } return age } export function formatTime(d: Date, type: number) { let year = d.getFullYear(); let month = d.getMonth() + 1; let day = d.getDate(); let yearStr = year.toString(); let monthStr = month.toString(); let dayStr = day.toString(); if(type == TIME_FORMAT.TYPE_SLASH) { if(day < 10) dayStr = '0' + dayStr; if(month < 10) monthStr = '0' + monthStr; return `${yearStr}/${monthStr}/${dayStr}`; } } /** * @description 获取指定时间后的某个时间点,如给定 date 后的晚八点整 * @export * @param {Date} date 给定时间 * @param {number} h 给定小时 * @param {number} [m=0] 给定分钟 * @param {number} [s=0] 给定秒 * @returns {Date} */ export function getNextTime(date: Date, h: number, m = 0, s = 0, ms = 0): Date { const milliseconds = date.getTime(); const timeToday = new Date(milliseconds).setHours(h, m, s, ms); return timeToday >= milliseconds ? new Date(timeToday) : new Date(timeToday + PER_DAY * PER_SECOND); } /** * 获得某个时间是星期几 * @param needHandle 是否处理周日 * @param {Date} time */ let week = undefined; export function getCurDay(needHandle = false, time?: Date) { if(!time) time = new Date(); let d = time.getDay(); if(week != undefined) { d = week; } if(needHandle && d == 0) d = 7; return d; } export function setWeek(d?: number) { week = d; if(d == 7) week = 0; }