229 lines
5.9 KiB
TypeScript
229 lines
5.9 KiB
TypeScript
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;
|
|
} |