64 lines
1.4 KiB
TypeScript
64 lines
1.4 KiB
TypeScript
|
|
import dayjs from 'dayjs';
|
||
|
|
|
||
|
|
export function formatDate(date: any) {
|
||
|
|
if (!date) {
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
return dayjs(date).format('DD/MM/YYYY HH:mm:ss');
|
||
|
|
}
|
||
|
|
|
||
|
|
export function formatTime(date: any) {
|
||
|
|
if (!date) {
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
return dayjs(date).format('HH:mm:ss');
|
||
|
|
}
|
||
|
|
|
||
|
|
export function today() {
|
||
|
|
return formatDate(dayjs());
|
||
|
|
}
|
||
|
|
|
||
|
|
export function lastDay() {
|
||
|
|
return formatDate(dayjs().subtract(1, 'days'));
|
||
|
|
}
|
||
|
|
|
||
|
|
export function lastWeek() {
|
||
|
|
return formatDate(dayjs().subtract(1, 'weeks'));
|
||
|
|
}
|
||
|
|
|
||
|
|
export function formatPureDate(date: any) {
|
||
|
|
if (!date) {
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
return dayjs(date).format('DD/MM/YYYY');
|
||
|
|
}
|
||
|
|
|
||
|
|
export function formatStandardDate(date: any) {
|
||
|
|
if (!date) {
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
const parsedDate = dayjs(date);
|
||
|
|
if (!parsedDate.isValid()) {
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
return parsedDate.format('YYYY-MM-DD');
|
||
|
|
}
|
||
|
|
|
||
|
|
export function formatSecondsToHumanReadable(seconds: number): string {
|
||
|
|
if (isNaN(seconds) || seconds < 0) {
|
||
|
|
return '0s';
|
||
|
|
}
|
||
|
|
|
||
|
|
const h = Math.floor(seconds / 3600);
|
||
|
|
const m = Math.floor((seconds % 3600) / 60);
|
||
|
|
// const s = toFixed(seconds % 60, 3);
|
||
|
|
const s = seconds % 60;
|
||
|
|
const formattedSeconds = s === 0 ? '0' : s.toFixed(3).replace(/\.?0+$/, '');
|
||
|
|
const parts = [];
|
||
|
|
if (h > 0) parts.push(`${h}h `);
|
||
|
|
if (m > 0) parts.push(`${m}m `);
|
||
|
|
if (s || parts.length === 0) parts.push(`${formattedSeconds}s`);
|
||
|
|
|
||
|
|
return parts.join('');
|
||
|
|
}
|