UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

116 lines (111 loc) 2.79 kB
'use strict'; 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;