时间:整理时间方法
This commit is contained in:
@@ -11,7 +11,7 @@ import { getRandValueByMinMax, getRandEelm } from './util';
|
||||
import { findWhere } from 'underscore';
|
||||
import { RoleModel, RoleType } from '../db/Role';
|
||||
import { Figure } from '../domain/dbGeneral';
|
||||
import { getBeforeDaySeconds, nowSeconds } from './timeUtil';
|
||||
import { getTimeFun, nowSeconds } from './timeUtil';
|
||||
import { calPlayerCeAndSave, reCalAllHeroCe } from './playerCe';
|
||||
import { checkTask, checkTaskWithHeroes, checkTaskWithEquip, accomplishTask } from './taskUtil';
|
||||
import { CreateHeroParam } from '../domain/roleField/hero';
|
||||
@@ -223,7 +223,7 @@ function unlockSingleFigure(dbFigures: Figure[], id: number, unlockDirect = fals
|
||||
delete figure.unlockedId;
|
||||
|
||||
if (dicGoods.timeLimit) {
|
||||
figure.time = getBeforeDaySeconds(-1 * dicGoods.timeLimit); // timeLimit天以后
|
||||
figure.time = <number>getTimeFun().getAfterDay(dicGoods.timeLimit); // timeLimit天以后
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import { TASK_TYPE, ABI_STAGE, WAR_TYPE, GUILD_JOB, TASK_FUN_TYPE, FUNCS_ID } fr
|
||||
import { UserTaskRecModel, UserTaskRecType } from '../db/UserTaskRec'
|
||||
import { RoleType, RoleModel } from '../db/Role';
|
||||
import { TaskParam, TaskListReturn } from '../domain/roleField/task';
|
||||
import { getTodayZeroPoint } from './timeUtil';
|
||||
import { getZeroPoint } from './timeUtil';
|
||||
import { HeroType } from '../db/Hero';
|
||||
import { EquipType, EquipModel } from '../db/Equip';
|
||||
import { ItemInter } from './interface';
|
||||
@@ -35,7 +35,7 @@ export async function checkTaskWithRole(roleId: string, taskType: number, role:
|
||||
let pushMessage = new Array<TaskListReturn>();
|
||||
|
||||
if (taskType == TASK_TYPE.LOGIN_SUM) {
|
||||
let today = getTodayZeroPoint();
|
||||
let today = getZeroPoint();
|
||||
if (today > role.loginTime) {
|
||||
pushMessage = await checkTask(roleId, taskType, 1, true, {}, funcs);
|
||||
//成长任务-累计登录游戏天数
|
||||
@@ -43,7 +43,7 @@ export async function checkTaskWithRole(roleId: string, taskType: number, role:
|
||||
}
|
||||
}
|
||||
else if (taskType == TASK_TYPE.LOGIN_SERIES) {
|
||||
let today = getTodayZeroPoint();
|
||||
let today = getZeroPoint();
|
||||
if (today > role.loginTime) {
|
||||
if (today - role.loginTime > 24 * 60 * 60) {
|
||||
pushMessage = await checkTask(roleId, taskType, 1, false, {}, funcs);
|
||||
|
||||
@@ -1,172 +1,473 @@
|
||||
import { TIME_FORMAT, REFRESH_TIME, REFRESH_HOUR } from '../consts';
|
||||
import { TIME_FORMAT, REFRESH_TIME, TIME_OUTPUT_TYPE, SHOP_REFRESH_TYPE } from '../consts';
|
||||
|
||||
const PER_SECOND = 1 * 1000;
|
||||
const PER_DAY = 24 * 60 * 60;
|
||||
const PER_MINUTE = 60;
|
||||
const PER_HOUR = 60 * 60;
|
||||
/**
|
||||
* 时间
|
||||
* @class
|
||||
*/
|
||||
class Time {
|
||||
WEEK_TO_MS = 7 * 24 * 60 * 60 * 1000;
|
||||
DAY_TO_HOUR = 24;
|
||||
DAY_TO_SECOND = 24 * 60 * 60;
|
||||
DAY_TO_MS = 24 * 60 * 60 * 1000;
|
||||
HOUR_TO_MINUTE = 60;
|
||||
HOUR_TO_SECOND = 60 * 60;
|
||||
HOUR_TO_MS = 60 * 60 * 1000;
|
||||
MINUTE_TO_MS = 60 * 1000;
|
||||
SECOND_TO_MS = 1000;
|
||||
|
||||
now: Date; // 当前时间
|
||||
time: Date; // 处理时间原料
|
||||
outputType: number; // 输出格式
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {number} outputType 输出格式 1-Date 2-10位时间戳 3-13位时间戳
|
||||
* @param {Date|number} time 传入的时间,如果不传默认为现在,可以传Date或10位或13位时间戳
|
||||
*/
|
||||
constructor(outputType: TIME_OUTPUT_TYPE, time?: Date|number) {
|
||||
this.outputType = outputType;
|
||||
this.now = new Date();
|
||||
if(time) {
|
||||
if(typeof time == 'number') {
|
||||
if(time.toString().length == 10) {
|
||||
this.time = new Date(time * 1000);
|
||||
} else {
|
||||
this.time = new Date(time);
|
||||
}
|
||||
} else if (time instanceof Date) {
|
||||
this.time = time;
|
||||
}
|
||||
} else {
|
||||
this.time = new Date();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 将得出的时间按输出格式转换
|
||||
* @param time {Date|number} 时间结果
|
||||
*/
|
||||
private _returnResult(time: Date| number) {
|
||||
if(this.outputType == 1) {
|
||||
if(typeof time == 'number') {
|
||||
if(time.toString().length == 10) {
|
||||
return new Date(time * 1000);
|
||||
} else if (time.toString().length == 13) {
|
||||
return new Date(time);
|
||||
}
|
||||
} else if (time instanceof Date) {
|
||||
return time;
|
||||
}
|
||||
} else if (this.outputType == 2) {
|
||||
if(typeof time == 'number') {
|
||||
if(time.toString().length == 10) {
|
||||
return time;
|
||||
} else if (time.toString().length == 13) {
|
||||
return Math.floor(time / 1000);
|
||||
}
|
||||
} else if (time instanceof Date) {
|
||||
return Math.floor(time.getTime() / 1000);
|
||||
}
|
||||
} else if (this.outputType == 3) {
|
||||
if(typeof time == 'number') {
|
||||
if(time.toString().length == 10) {
|
||||
return time * 1000;
|
||||
} else if (time.toString().length == 13) {
|
||||
return time;
|
||||
}
|
||||
} else if (time instanceof Date) {
|
||||
return time.getTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 设置时间
|
||||
* @param time 设置的时间
|
||||
* @param hour 几点
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
private _setHour(time: Date, hour: number, minute = 0, seconds = 0) {
|
||||
let t = new Date(time);
|
||||
t.setHours(hour, minute, seconds);
|
||||
return t;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获得一天的刷新时间,如果是5点刷新,4点进入的话算前一天
|
||||
* @param time 设置的时间
|
||||
* @param hour 几点
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
private _getDayZeroPoint(time: Date, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._setHour(time, hour, minute, seconds);
|
||||
if(this.now > t) {
|
||||
return t;
|
||||
} else {
|
||||
return new Date(t.getTime() - this.DAY_TO_MS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取一周的某个时间
|
||||
* @param time 设置的时间
|
||||
* @param day 周几 周日为0
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
private _getTimeWithWeek(time: Date, day: number, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let dayOfWeek = time.getDay();
|
||||
if(dayOfWeek == 0) dayOfWeek = 7;
|
||||
|
||||
let d = time.getDate();
|
||||
let y = time.getFullYear(); //当前年
|
||||
let m = time.getMonth(); //月
|
||||
let t = new Date(y, m, d - dayOfWeek + day, hour, minute, seconds);
|
||||
return t;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取一月的某个时间
|
||||
* @param time 设置的时间
|
||||
* @param day 几号
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
private _getTimeWithMonth(time: Date, day: number, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let y = time.getFullYear(); //当前年
|
||||
let m = time.getMonth(); //月
|
||||
let t = new Date(y, m, day, hour, minute, seconds);
|
||||
return t;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 计算某个月有几天
|
||||
* @param year 年份
|
||||
* @param month 月份,0-11,1月为0
|
||||
*/
|
||||
private _countDaysInYearMonth(year: number, month: number){
|
||||
var date = new Date(year, month, 0);
|
||||
return date.getDate();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取几个月前的某一天
|
||||
* @param time 设置的时间
|
||||
* @param month 几个月前
|
||||
* @param day 几号
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
private _getBeforeMonthWithDay(time: Date, month: number, day: number, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let y = time.getFullYear(); //当前年
|
||||
let m = time.getMonth(); //月
|
||||
if(m - month < 0) {
|
||||
m = m - month + 12;
|
||||
y --;
|
||||
} else {
|
||||
m -= month;
|
||||
}
|
||||
let days = this._countDaysInYearMonth(y, m);
|
||||
if(day > days) day = days;
|
||||
let t = new Date(y, m, day, hour, minute, seconds);
|
||||
return t;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取两个日期之间差几天
|
||||
* @param preDate 前一天
|
||||
* @param curDate 后一天
|
||||
*/
|
||||
private _getDayGap(preDate: Date, curDate: Date) {
|
||||
let cur = this._getDayZeroPoint(curDate);
|
||||
let pre = this._getDayZeroPoint(preDate);
|
||||
|
||||
return Math.floor((cur.getTime() - pre.getTime()) / this.DAY_TO_MS)
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 直接获取时间
|
||||
*/
|
||||
public getTime() {
|
||||
return this._returnResult(this.time);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 返回某填的指定时分秒
|
||||
* @param hour 几点
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
public getTimeWithHour(hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._setHour(this.time, hour, minute, seconds);
|
||||
return this._returnResult(t);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取一周的某个时间
|
||||
* @param time 设置的时间
|
||||
* @param day 周几 周日为0
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
public getTimeWithWeek(day: number, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._getTimeWithWeek(this.time, day, hour, minute, seconds);
|
||||
return this._returnResult(t);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取这个月的某个时间
|
||||
* @param day 几号
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
public getTimeWithMonth(day: number, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._getTimeWithMonth(this.time, day, hour, minute, seconds);
|
||||
return this._returnResult(t);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获得一天的刷新时间,如果是5点刷新,4点进入的话算前一天
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
public getDayZeroPoint(hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._getDayZeroPoint(this.time, hour, minute, seconds);
|
||||
return this._returnResult(t);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获得一周的刷新时间,如果是5点刷新,4点进入的话算前一周
|
||||
* @param day 星期几
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
public getWeekZeroPoint(day: number = 1, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._getTimeWithWeek(this.time, day, hour, minute, seconds);
|
||||
if(this.now > t) {
|
||||
return this._returnResult(t);
|
||||
} else {
|
||||
return this._returnResult(t.getTime() - this.WEEK_TO_MS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获得一个月的刷新时间,如果是5点刷新,4点进入的话算前一月
|
||||
* @param day 几号
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
public getMonthZeroPoint(day: number = 1, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._getTimeWithWeek(this.time, day, hour, minute, seconds);
|
||||
if(this.now > t) {
|
||||
return this._returnResult(t);
|
||||
} else {
|
||||
let tt = this._getBeforeMonthWithDay(this.time, 1, day, hour, minute, seconds);
|
||||
return this._returnResult(tt);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取几天前的指定时分秒
|
||||
* @param day 几天前,(如果是输入3号3点,5点刷新,1天前指1号5点)
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
public getBeforeDayWithHour(day: number = 0, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._setHour(this.time, hour, minute, seconds);
|
||||
if(this.time > t) {
|
||||
let timestamp = t.getTime() - day * this.DAY_TO_MS;
|
||||
return this._returnResult(timestamp);
|
||||
} else {
|
||||
let timestamp = t.getTime() - (day + 1) * this.DAY_TO_MS;
|
||||
return this._returnResult(timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取几天后的指定时分秒,如果是指定5点刷新,6点进入的话算后一天
|
||||
* @param day 几天后,(如果是输入3号6点,5点刷新,1天后指5号5点)
|
||||
* @param hour 几点,默认为刷新时间
|
||||
* @param minute 几分
|
||||
* @param seconds 几秒
|
||||
*/
|
||||
public getAfterDayWithHour(day: number = 0, hour = REFRESH_TIME, minute = 0, seconds = 0) {
|
||||
let t = this._setHour(this.time, hour, minute, seconds);
|
||||
if(this.time > t) {
|
||||
let timestamp = t.getTime() + (day + 1) * this.DAY_TO_MS;
|
||||
return this._returnResult(timestamp);
|
||||
} else {
|
||||
let timestamp = t.getTime() + day * this.DAY_TO_MS;
|
||||
return this._returnResult(timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取某个时间的纯粹的几天前
|
||||
* @param day 几天前
|
||||
*/
|
||||
public getBeforeDay(day: number) {
|
||||
let timestamp = this.time.getTime() - day * this.DAY_TO_MS;
|
||||
return this._returnResult(timestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取某个时间的纯粹的几天前
|
||||
* @param day 几天后
|
||||
*/
|
||||
public getAfterDay(day: number) {
|
||||
let timestamp = this.time.getTime() + day * this.DAY_TO_MS;
|
||||
return this._returnResult(timestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取某个时间的纯粹的几小时前
|
||||
* @param hour 几小时前
|
||||
*/
|
||||
public getBeforeHour(hour: number) {
|
||||
let timestamp = this.time.getTime() - hour * this.HOUR_TO_MS;
|
||||
return this._returnResult(timestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取某个时间的纯粹的几分钟前
|
||||
* @param hour 几分钟前
|
||||
*/
|
||||
public getBeforeMinute(minute: number) {
|
||||
let timestamp = this.time.getTime() - minute * this.MINUTE_TO_MS;
|
||||
return this._returnResult(timestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取某个时间的几秒前
|
||||
* @param seconds 几秒前
|
||||
*/
|
||||
public getBeforeSeconds(seconds: number) {
|
||||
let timestamp = this.time.getTime() - seconds;
|
||||
return this._returnResult(timestamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取今天距离preDate整数个day天之后的时间
|
||||
* @param preDate 前一个时间点
|
||||
* @param day 几天
|
||||
*/
|
||||
public getAfterDayByGap(preDate: Date, day: number) {
|
||||
let gap = this._getDayGap(preDate, this.time);
|
||||
let n = Math.floor(gap / day);
|
||||
return this.getAfterDayWithHour(n * day);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取某个日期到今天之间差几天
|
||||
*/
|
||||
public getDayGap() {
|
||||
return this._getDayGap(this.now, this.time);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查某个时间距离今天是否在day天以内
|
||||
* @param day day天以内
|
||||
*/
|
||||
public checkDay(day: number = 1) {
|
||||
if (this.time.getTime() - this.now.getTime() <= day * this.DAY_TO_MS) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取时间对象,10位时间戳
|
||||
* @param time 输入时间
|
||||
*/
|
||||
export function getTimeFun(time?: number|Date) {
|
||||
let t = new Time(TIME_OUTPUT_TYPE.STAMP_10, time);
|
||||
return t
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取时间对象,13位时间戳
|
||||
* @param time 输入时间
|
||||
*/
|
||||
export function getTimeFunM(time?: number|Date) {
|
||||
let t = new Time(TIME_OUTPUT_TYPE.STAMP_13, time);
|
||||
return t
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取时间对象,Date格式
|
||||
* @param time 输入时间
|
||||
*/
|
||||
export function getTimeFunD(time?: number|Date) {
|
||||
let t = new Time(TIME_OUTPUT_TYPE.DATE, time);
|
||||
return t
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 将某个Date格式转换为10位时间戳
|
||||
* @param time 时间
|
||||
*/
|
||||
export function getSeconds(time: Date) {
|
||||
return Math.floor(time.getTime() / PER_SECOND);
|
||||
let t = new Time(TIME_OUTPUT_TYPE.STAMP_10, time);
|
||||
return <number>t.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取现在的10位时间戳时间
|
||||
*/
|
||||
export function nowSeconds() {
|
||||
return Math.floor(Date.now() / PER_SECOND );
|
||||
let t = new Time(TIME_OUTPUT_TYPE.STAMP_10);
|
||||
return <number>t.getTime();
|
||||
}
|
||||
|
||||
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;
|
||||
/**
|
||||
* 获取刷新时间点 10位时间戳
|
||||
* @param refreshType 刷新类型,每天/每周/每月,默认每天
|
||||
*/
|
||||
export function getZeroPoint(refreshType: SHOP_REFRESH_TYPE = SHOP_REFRESH_TYPE.DAILY) {
|
||||
let t = new Time(TIME_OUTPUT_TYPE.STAMP_10);
|
||||
if(refreshType == SHOP_REFRESH_TYPE.DAILY) {
|
||||
return <number>t.getDayZeroPoint();
|
||||
} else if (refreshType == SHOP_REFRESH_TYPE.WEEKLY) {
|
||||
return <number>t.getWeekZeroPoint();
|
||||
} else if (refreshType == SHOP_REFRESH_TYPE.MONTHLY) {
|
||||
return <number>t.getMonthZeroPoint();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export function getBeforeDayDate(day: number) {
|
||||
let time = getTodayZeroPoint() - day * PER_DAY;
|
||||
return time;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取几天以前(按秒获取)
|
||||
* @param day 几天以前
|
||||
* 获取刷新时间点 Date类型
|
||||
* @param refreshType 刷新类型,每天/每周/每月,默认每天
|
||||
*/
|
||||
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;
|
||||
export function getZeroPointD(refreshType: SHOP_REFRESH_TYPE = SHOP_REFRESH_TYPE.DAILY) {
|
||||
let t = new Time(TIME_OUTPUT_TYPE.DATE);
|
||||
if(refreshType == SHOP_REFRESH_TYPE.DAILY) {
|
||||
return <Date>t.getDayZeroPoint();
|
||||
} else if (refreshType == SHOP_REFRESH_TYPE.WEEKLY) {
|
||||
return <Date>t.getWeekZeroPoint();
|
||||
} else if (refreshType == SHOP_REFRESH_TYPE.MONTHLY) {
|
||||
return <Date>t.getMonthZeroPoint();
|
||||
}
|
||||
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
|
||||
* 根据 yy-dd-mm格式获取年龄
|
||||
*
|
||||
* @param {string} birthday
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回今天的某个时间点
|
||||
* @param time
|
||||
* @param hour
|
||||
*/
|
||||
export function getTodayZeroDate(hour = 0) {
|
||||
return getZeroDate(new Date(), hour);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据给定的时间获得某个时间点
|
||||
* @param time
|
||||
* @param hour
|
||||
*/
|
||||
export function getZeroDate(time: Date, hour = 0) {
|
||||
let date = new Date(time.getTime());
|
||||
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();
|
||||
@@ -187,7 +488,12 @@ export function getAge(birthday: string) {
|
||||
return age
|
||||
}
|
||||
|
||||
export function formatTime(d: Date, type: number) {
|
||||
/**
|
||||
* 将Date格式的数据转为string格式
|
||||
* @param {Date} d 时间
|
||||
* @param {TIME_FORMAT} type 类型
|
||||
*/
|
||||
export function formatTime(d: Date, type: TIME_FORMAT) {
|
||||
let year = d.getFullYear();
|
||||
let month = d.getMonth() + 1;
|
||||
let day = d.getDate();
|
||||
@@ -202,21 +508,6 @@ export function formatTime(d: Date, type: number) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @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 是否处理周日
|
||||
@@ -241,37 +532,3 @@ export function setWeek(d?: number) {
|
||||
week = d;
|
||||
if(d == 7) week = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param preDate
|
||||
* @param curDate
|
||||
*/
|
||||
export function getDayGap(preDate: Date, curDate: Date) {
|
||||
let cur = getZeroDate(curDate, REFRESH_HOUR);
|
||||
let pre = getZeroDate(preDate, REFRESH_HOUR);
|
||||
|
||||
return Math.floor((cur.getTime() - pre.getTime()) / PER_DAY / PER_SECOND)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某一天的 n * day 天之后
|
||||
* @param preDate
|
||||
* @param curDate
|
||||
* @param day
|
||||
*/
|
||||
export function getNextDayByGap(preDate: Date, curDate: Date, day: number) {
|
||||
let gap = getDayGap(preDate, curDate);
|
||||
let n = Math.floor(gap / day);
|
||||
let time = getAfterDateByDay(preDate, n * day);
|
||||
return new Date(time * PER_SECOND);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某个时间的 day 天之后
|
||||
* @param day
|
||||
*/
|
||||
export function getAfterDateByDay(preDate: Date, day: number) {
|
||||
let time = getZeroDate(preDate, REFRESH_HOUR).getTime() + day * PER_DAY * PER_SECOND;
|
||||
return Math.floor(time/PER_SECOND);
|
||||
}
|
||||
@@ -4,10 +4,10 @@ import { HeroModel, HeroType } from '../db/Hero';
|
||||
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
import { HERO_CE_RATIO, ABI_STAGE, GACHA_TO_FLOOR } from '../consts';
|
||||
import { HERO_CE_RATIO, ABI_STAGE, GACHA_TO_FLOOR, TIME_OUTPUT_TYPE, REFRESH_TIME } from '../consts';
|
||||
|
||||
import { findIndex } from 'underscore';
|
||||
import { getWeekDate } from './timeUtil';
|
||||
import { getTimeFunM } from './timeUtil';
|
||||
import { Floor } from '../domain/activityField/gachaField';
|
||||
const randomName = require("chinese-random-name");
|
||||
const moment = require('moment');
|
||||
@@ -130,7 +130,7 @@ export function deltaDays(preTime: Date, proTime: Date): number {
|
||||
* @param hour 几点刷新
|
||||
* @param deltaDay 间隔几天刷新,默认每天刷新(deltaDay = 1)
|
||||
*/
|
||||
export function shouldRefresh(preTime: Date, now: Date, hour: number, deltaDay = 1): boolean {
|
||||
export function shouldRefresh(preTime: Date, now: Date, hour: number = REFRESH_TIME, deltaDay = 1): boolean {
|
||||
if (!preTime) return true;
|
||||
let curTime = new Date(now.getTime());
|
||||
let refreshTime = new Date(now.getTime());
|
||||
@@ -151,40 +151,17 @@ export function shouldRefresh(preTime: Date, now: Date, hour: number, deltaDay =
|
||||
* @param hour 几点刷新
|
||||
* @param deltaDay 间隔几天刷新,默认每天刷新(deltaDay = 1)
|
||||
*/
|
||||
export function shouldRefreshWeek(preTime: Date, now: Date, day: number, hour: number, deltaWeek = 1): boolean {
|
||||
export function shouldRefreshWeek(preTime: Date, now: Date, day: number = 1, hour: number = REFRESH_TIME, deltaWeek = 1): boolean {
|
||||
if (!preTime) return true;
|
||||
let curTime = new Date(now.getTime());
|
||||
let refreshTime = getWeekDate(now, day, hour);
|
||||
let refeshTime = refreshTime.getTime();
|
||||
let refreshTime = <number>getTimeFunM(now).getTimeWithWeek(day, hour);
|
||||
|
||||
if (refeshTime - preTime.getTime() > (deltaWeek >= 1 ? deltaWeek - 1 : 0) * 7 * 24 * 60 * 60 * 1000 && curTime.getTime() >= refeshTime) {
|
||||
if (refreshTime - preTime.getTime() > (deltaWeek >= 1 ? deltaWeek - 1 : 0) * 7 * 24 * 60 * 60 * 1000 && curTime.getTime() >= refreshTime) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取 x天后的y点
|
||||
* @param curTime 现在时间
|
||||
* @param hour 几点刷新
|
||||
*/
|
||||
export function getRefTime(now = new Date(), checkHour: number, day = 0) {
|
||||
let curTime = new Date(now.getTime());
|
||||
if (checkHour < 0) {
|
||||
checkHour = 24 + checkHour;
|
||||
if (curTime.getHours() >= checkHour) {
|
||||
curTime.setDate(curTime.getDate() + 1);
|
||||
}
|
||||
} else {
|
||||
if (curTime.getHours() < checkHour) {
|
||||
curTime.setDate(curTime.getDate() - 1);
|
||||
}
|
||||
}
|
||||
let today = curTime.setHours(checkHour, 0, 0, 0);;
|
||||
return new Date(today + day * 24 * 60 * 60 * 1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从一个数组中随机返回不重复的 cnt 个元素数组
|
||||
* @param source 原数组
|
||||
|
||||
Reference in New Issue
Block a user