t-comm
Version:
专业、稳定、纯粹的工具库
116 lines (111 loc) • 2.79 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var time_time = require('../time/time.js');
/**
* 获取一个月有多少天
* 原理:new Date()第2个参数默认为1,就是每个月的1号,把它设置为0时,
* new Date()会返回上一个月的最后一天,然后通过getDate()方法得到天数
* @param {string} year 年份
* @param {string} month 月份
* @returns {number} 天数
*
* @example
* getMonthDay(2022, 2) // 28
*
* getMonthDay(2022, 3) // 31
*
* getMonthDay(2022, 4) // 30
*/
function getMonthDay(year, month) {
var days = new Date(year, month, 0).getDate();
return days;
}
/**
* 获取一个月有多少天
*
* 原理:把每月的天数写在数组中,再判断时闰年还是平年确定2月分的天数
* @param {string} year 年份
* @param {string} month 月份
* @returns {number} 天数
*
* @example
* getMonthDay2(2022, 2)
* // 28
*
* getMonthDay2(2022, 3)
* // 31
*
* getMonthDay2(2022, 4)
* // 30
*/
function getMonthDay2(year, month) {
var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)) {
days[1] = 29;
}
return days[month - 1];
}
function toMonday(dtm) {
var dte = new Date(dtm);
var day = dte.getDay();
var dty = dte.getDate();
if (day === 0) {
day = 7;
}
dte.setDate(dty - day + 1);
return "".concat(dte.getFullYear(), "-").concat(dte.getMonth(), "-").concat(dte.getDate());
}
/**
* 判断两个日期是否属于同一周
*
* 原理:把两个日期均转换到周一,比较转换后的两日期是否相同。
*
* @param {number} date1 第1个时间戳
* @param {number} date2 第2个时间戳
* @returns {boolean} 是否是同一周
* @example
*
* isSameWeek(1601308800000, 1601395200000)
*
* // true
*
* isSameWeek(1601308800000, 1601913600000)
*
* // false
*/
function isSameWeek(date1, date2) {
var dt1 = new Date();
dt1.setTime(date1);
var dt2 = new Date();
dt2.setTime(date2);
var md1 = toMonday(dt1);
var md2 = toMonday(dt2);
return md1 === md2;
}
function toZeroTime(date) {
var time = new Date(date).getTime();
return time_time.timeStampFormat(time, 'yyyy-MM-dd');
}
/**
* 判断是否是同一天
* @param {number} date1 时间戳
* @param {number} date2 时间戳
* @returns 是否相同
* @example
* ```ts
* isSameDay(1702613769418, 1702613769419) // true
* ```
*/
function isSameDay(date1, date2) {
var dt1 = new Date();
dt1.setTime(date1);
var dt2 = new Date();
dt2.setTime(date2);
var md1 = toZeroTime(dt1);
var md2 = toZeroTime(dt2);
return md1 === md2;
}
exports.getMonthDay = getMonthDay;
exports.getMonthDay2 = getMonthDay2;
exports.isSameDay = isSameDay;
exports.isSameWeek = isSameWeek;