UNPKG

apass-opensdk-hugong

Version:

飞书Apass低代码平台-飞书开放平台-相关的接口整合和常用的方法整合

72 lines (59 loc) 2.25 kB
class Date_{ #hg = null constructor(hg){ this.#hg = hg } moment(){ const moment = require('moment-timezone'); moment.tz.setDefault("Asia/Shanghai"); return moment() } nowFormat(format) { const moment = require('moment-timezone'); moment.tz.setDefault("Asia/Shanghai"); return moment().format(format || 'YYYY-MM-DD HH:mm:ss') } splitDateRange(startDate, endDate, splitMonths) { // 将输入的日期字符串转换为Date对象 const start = new Date(startDate); const end = new Date(endDate); // 检查输入的合法性 if (start >= end) { throw new Error("开始日期必须早于结束日期"); } if (splitMonths <= 0) { throw new Error("分割持续月份必须大于0"); } // 用于存储分割后的日期范围 const result = []; // 当前处理的开始日期 let currentStart = new Date(start); // 计算总月份数 const totalMonths = (end.getFullYear() - currentStart.getFullYear()) * 12 + end.getMonth() - currentStart.getMonth() + 1; // 循环分割日期范围 while (currentStart < end) { // 计算当前分割的结束日期 const currentEnd = new Date(currentStart); currentEnd.setMonth(currentEnd.getMonth() + splitMonths); // 如果当前分割的结束日期超过了总结束日期,则调整为总结束日期 if (currentEnd > end) { currentEnd.setTime(end.getTime()); } // 计算当前分割的持续月份数 const len = (currentEnd.getFullYear() - currentStart.getFullYear()) * 12 + currentEnd.getMonth() - currentStart.getMonth() + 1; // 计算当前分割的天数 const days = (currentEnd - currentStart) / (1000 * 60 * 60 * 24) + 1; // 将当前分割的日期范围添加到结果数组中 result.push({ begin: currentStart.toISOString().split("T")[0], end: currentEnd.toISOString().split("T")[0], len: len, days: Math.floor(days) // 向下取整,因为天数应该是整数 }); // 更新当前处理的开始日期为当前分割的结束日期 currentStart = new Date(currentEnd); } return result; } } module.exports = Date_