import {lineData} from "@/components/lineChart/lineChart";
import {Text} from "@tarojs/components";
/**
* 秒转分
* s:秒
* 20:20:20
* 10:10
*/
export function formatMinute(s: number | string): string {
const time = Number(s)
if (isNaN(time)) {
return ''
}
const h = parseInt(String(time / 3600))
const min = parseInt(String(time / 60 % 60))
const sec = Math.ceil(time % 60)
const hours = h < 10 ? '0' + h : h
const formatSecond = sec > 59 ? 59 : sec
return `${hours > 0 ? `${hours}:` : ''}${min < 10 ? '0' + min : min}:${formatSecond < 10 ? '0' + formatSecond : formatSecond}`
}
/**
* 小于60秒显示秒
* 大于60s - 1h 显示分
* 大于1h 显示小时
*/
export function formatTime(time: number, padding = 10): JSX.Element {
if (time < 60) {
return (<>
{time}
秒
>)
} else if (time >= 60 && time < 3600) {
return (<>
{(time / 60).toFixed(1)}
分钟
>)
} else if (time >= 3600) {
return (<>
{(time / 3600).toFixed(1)}
小时
>)
}
return <>>
}
export function formatDateTime(date, format) {
const o = {
'M+': date.getMonth() + 1, // 月份
'd+': date.getDate(), // 日
'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 小时
'H+': date.getHours(), // 小时
'm+': date.getMinutes(), // 分
's+': date.getSeconds(), // 秒
'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
S: date.getMilliseconds(), // 毫秒
a: date.getHours() < 12 ? '上午' : '下午', // 上午/下午
A: date.getHours() < 12 ? 'AM' : 'PM', // AM/PM
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (let k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(
RegExp.$1,
RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return format;
}
export function formatDate(date, format) {
const year = date.getFullYear(),
month = date.getMonth() + 1,//月份是从0开始的
day = date.getDate(),
hour = date.getHours(),
min = date.getMinutes(),
sec = date.getSeconds();
const preArr = Array.apply(null, Array(10)).map(function (_elem, index) {
return '0' + index;
});
return format.replace(/YY/g, year)
.replace(/MM/g, preArr[month] || month)
.replace(/dd/g, preArr[day] || day)
.replace(/hh/g, preArr[hour] || hour)
.replace(/mm/g, preArr[min] || min)
.replace(/ss/g, preArr[sec] || sec);
}
export function getMonday(): number {
const now = new Date();
const nowTime = now.setHours(0, 0, 0, 0);
const day = now.getDay() || 7; //为周日的时候 day 修改为7 否则当天周天会有问题
const oneDayTime = 24 * 60 * 60 * 1000;
return nowTime - (day - 1) * oneDayTime;//显示周一
}
export function getSunday(): number {
const now = new Date();
const nowTime = now.setHours(0, 0, 0, 0);
const day = now.getDay() || 7; //为周日的时候 day 修改为7 否则当天周天会有问题
const oneDayTime = 24 * 60 * 60 * 1000;
return nowTime + (7 - day) * oneDayTime
}
export function monthFirst(): number {
const data = new Date();
data.setDate(1);
return data.setHours(0, 0, 0, 0)
}
export function monthEnd(): number {
const data = new Date();
if (data.getMonth() === 11) {
data.setMonth(0);
} else {
data.setMonth(data.getMonth() + 1);
}
data.setDate(1);
data.setHours(0);
data.setSeconds(0);
data.setMinutes(0);
return (parseInt(String(data.getTime() / 1000)) - 1) * 1000;
}
export function everyDay(start_time: number, end_time: number, data: Record): lineData[] {
const time = 86400000
try {
const days = Math.floor((end_time - start_time) / time)
if (isNaN(days)) return [];
return new Array(days === 1 ? 1 : days + 1).fill(0).map((_, index) => {
const day = start_time + index * time
return {
time: formatDateTime(new Date(day), 'MM/dd'),
value: data?.[String(day)] || 0
}
})
} catch (e) {
return []
}
}