t-comm
Version:
专业、稳定、纯粹的工具库
131 lines (129 loc) • 4.94 kB
JavaScript
/**
* 获取几天前的时间戳
* @private
* @param {boolean} n 几天前
* @returns {number} 时间戳
*/
function getTimeStamp() {
var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
return Date.now() - n * 24 * 60 * 60 * 1000;
}
/**
* 获取几天前的起始时间戳
* @param {boolean} n 几天前
* @returns {number} 时间戳
* @example
* ```ts
* // 默认返回秒级时间戳(今日 0 点 0 分 0 秒)
* getDayStartTimestamp(0);
* // 返回毫秒级时间戳
* getDayStartTimestamp(0, 'ms');
* // 获取三天前的起始时间戳(秒级)
* getDayStartTimestamp(3);
* ```
*/
function getDayStartTimestamp() {
var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 's';
var time = getTimeStamp(n);
var date = new Date(time);
date.setHours(0, 0, 0, 0);
if (unit === 'ms' || unit === 'MS') {
return date.getTime();
}
var startTime = parseInt("".concat(date.getTime() / 1000), 10);
return startTime;
}
/**
* 获取几天前的终止时间戳
* @param {boolean} n 几天前
* @param {string} unit 返回时间戳的单位,默认是s(秒)
* @param {string} endFlag 以什么单位作为结束时间,默认分钟,即 23时59劆0秒0毫秒
* @returns {number} 时间戳
* @example
* ```ts
* // 默认返回今日 23:59:00 的秒级时间戳
* getDayEndTimeStamp(0);
* // 返回毫秒级
* getDayEndTimeStamp(0, 'ms');
* // 以秒为结束单位,返回 23:59:59 毫秒级
* getDayEndTimeStamp(0, 'MS', 's');
* // 以毫秒为结束单位,返回 23:59:59.999
* getDayEndTimeStamp(0, 'MS', 'ms');
* // 以小时为结束单位,返回 23:00:00
* getDayEndTimeStamp(0, 'MS', 'h');
* ```
*/
function getDayEndTimeStamp() {
var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 's';
var endFlag = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'm';
var time = getTimeStamp(n);
var date = new Date(time);
if (['h', 'hh', 'H'].indexOf(endFlag) > -1) {
date.setHours(23, 0, 0, 0);
} else if (['m', 'mm', 'M'].indexOf(endFlag) > -1) {
date.setHours(23, 59, 0, 0);
} else if (['s', 'ss', 'S'].indexOf(endFlag) > -1) {
date.setHours(23, 59, 59, 0);
} else if (['ms', 'MS'].indexOf(endFlag) > -1) {
date.setHours(23, 59, 59, 999);
}
if (unit === 'ms' || unit === 'MS') {
return date.getTime();
}
var endTime = parseInt("".concat(date.getTime() / 1000), 10);
return endTime;
}
function getTodayStartTimestamp() {
var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 's';
return getDayStartTimestamp(0, unit);
}
function getTodayEndTimeStamp() {
var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 's';
var endFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'm';
return getDayEndTimeStamp(0, unit, endFlag);
}
function getYesterdayStartTimeStamp() {
var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 's';
return getDayStartTimestamp(1, unit);
}
function getYesterdayEndTimeStamp() {
var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 's';
var endFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'm';
return getDayEndTimeStamp(1, unit, endFlag);
}
function getDBYStartTimeStamp() {
var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 's';
return getDayStartTimestamp(2, unit);
}
function getDBYEndTimeStamp() {
var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 's';
var endFlag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'm';
return getDayEndTimeStamp(2, unit, endFlag);
}
/**
* 查询距今有多少天
* @param date 时间
* @returns 距今多少天
* @ignore
*/
function getDaysFromToday(date) {
var zero = new Date(date);
zero.setHours(0, 0, 0, 0);
var now = new Date();
now.setHours(0, 0, 0);
var days = (now.getTime() - zero.getTime()) / (1 * 24 * 60 * 60 * 1000);
return parseInt("".concat(days), 10);
}
function getSomeDayStartTimeStamp(date) {
var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 's';
var days = getDaysFromToday(date);
return getDayStartTimestamp(days, unit);
}
function getSomeDayEndTimeStamp(date) {
var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 's';
var days = getDaysFromToday(date);
return getDayEndTimeStamp(days, unit);
}
export { getDBYEndTimeStamp, getDBYStartTimeStamp, getDayEndTimeStamp, getDayStartTimestamp, getSomeDayEndTimeStamp, getSomeDayStartTimeStamp, getTodayEndTimeStamp, getTodayStartTimestamp, getYesterdayEndTimeStamp, getYesterdayStartTimeStamp };