daikins/.svn/pristine/2a/2ae3ed163819597dfaa42cce218...

136 lines
4.0 KiB
Plaintext

// 格式化浮点数
export function formatFloat(number: string | number, precision = 2) {
number = parseFloat(number);
if (isNaN(number) && !number) return number;
return number.toFixed(precision);
}
export function fixFloat(number: number, digit = 2) {
const m = 10 ** digit;
return (Math.round(number * m, 10) / m).toFixed(digit);
}
export function toMoney(num: string | number) {
num = fixFloat(num);
if (isNaN(num)) return num;
const [i, f] = String(num).split('.');
return `${parseFloat(i).toLocaleString()}.${f}`;
}
// 格式化日期
export function formatDate(date: string | number | Date, fmt = 'yyyy-MM-dd hh:mm:ss') {
const that = new Date(date);
const o = {
'M+': that.getMonth() + 1, // 月份
'd+': that.getDate(), // 日
'h+': that.getHours(), // 小时
'm+': that.getMinutes(), // 分
's+': that.getSeconds(), // 秒
'q+': Math.floor((that.getMonth() + 3) / 3), // 季度
S: that.getMilliseconds(), // 毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (`${that.getFullYear()}`).substr(4 - RegExp.$1.length));
}
for (const k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : ((`00${o[k]}`).substr((`${o[k]}`).length)));
}
}
return fmt;
}
export function calculateDateIntervals(StartTime1: string | number | Date, EndTime2: string | number | Date) {
const currentDate = new Date();
let startDate, endDate;
const dateNow = currentDate.getDate();
if (!StartTime1 && !EndTime2) {
startDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 11, dateNow);
endDate = currentDate;
const monthList = [];
const type = 2;
for (let month = 0; month <=11; month++) {
const date = new Date(currentDate.getFullYear(), currentDate.getMonth() - month, dateNow);
monthList.push(date.toISOString().slice(0, 7));
}
const reversedArray = [];
for (let i = monthList.length - 1; i >= 0; i--) {
reversedArray.push(monthList[i]);
}
// console.log(reversedArray)
return { type, list: reversedArray };
} else {
startDate = new Date(StartTime1);
endDate = new Date(EndTime2);
}
const timeDiff = endDate.getTime() - startDate.getTime();
const oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数
const daysDiff = Math.floor(timeDiff / oneDay);
if (daysDiff < 15) {
const dateList = [];
const type = 3;
for (let i = 0; i <= daysDiff; i++) {
const day = new Date(startDate.getTime() + i * oneDay);
dateList.push(day.toISOString().split('T')[0]);
}
return { type, list: dateList };
} else if (daysDiff <= 365) {
const monthList = [];
const type = 2;
const startYear = startDate.getFullYear();
const endYear = endDate.getFullYear();
const startMonth = startDate.getMonth();
const endMonth = endDate.getMonth();
for (let year = startYear; year <= endYear; year++) {
const monthStart = (year === startYear) ? startMonth : 0;
const monthEnd = (year === endYear) ? endMonth : 11;
for (let month = monthStart; month <= monthEnd; month++) {
monthList.push(`${year}-${String(month + 1).padStart(2, '0')}`);
}
}
// const reversedArray = [];
// for (let i = monthList.length - 1; i >= 0; i--) {
// reversedArray.push(monthList[i]);
// }
console.log(monthList)
return { type, list: monthList };
} else {
const yearList = [];
const type = 1;
for (let year = startDate.getFullYear(); year <= endDate.getFullYear(); year++) {
yearList.push(year.toString());
}
return { type, list: yearList };
}
}
export function getPreviousMonths() {
const currentDate = new Date();
const previousMonths = [];
for (let i = 0; i < 5; i++) {
const previousMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() - (i+2), 1);
previousMonths.push(previousMonth.toLocaleString('default', { month: 'long', year: 'numeric' }));
}
return previousMonths.reverse();
}