apass-opensdk-hugong
Version:
飞书Apass低代码平台-飞书开放平台-相关的接口整合和常用的方法整合
72 lines (59 loc) • 2.25 kB
JavaScript
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_