mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 00:09:51 +03:00
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import parseMilliseconds from 'parse-ms';
|
|
|
|
const LOCALE_FORMAT = new Intl.DateTimeFormat([...window.navigator.languages], {
|
|
day: 'numeric',
|
|
month: 'short',
|
|
year: 'numeric',
|
|
hour: 'numeric',
|
|
minute: 'numeric',
|
|
second: 'numeric',
|
|
hour12: false
|
|
});
|
|
|
|
export const formatDateTime = (dateTime: string) => {
|
|
return LOCALE_FORMAT.format(new Date(dateTime.substr(0, 19)));
|
|
};
|
|
|
|
export const formatLocalDateTime = (date: Date) => {
|
|
return new Date(date.getTime() - date.getTimezoneOffset() * 60000).toISOString().slice(0, -1).substr(0, 19);
|
|
};
|
|
|
|
export const pluralize = (count: number, noun: string) =>
|
|
`${Intl.NumberFormat().format(count)} ${noun}${count !== 1 ? 's' : ''}`;
|
|
|
|
export const formatDurationMin = (duration_min: number) => {
|
|
const { days, hours, minutes } = parseMilliseconds(duration_min * 60000);
|
|
let formatted = '';
|
|
if (days) {
|
|
formatted += pluralize(days, 'day') + ' ';
|
|
}
|
|
if (hours) {
|
|
formatted += pluralize(hours, 'hour') + ' ';
|
|
}
|
|
if (minutes) {
|
|
formatted += pluralize(minutes, 'minute') + ' ';
|
|
}
|
|
return formatted;
|
|
};
|
|
|
|
export const formatDurationSec = (duration_sec: number) => {
|
|
if (duration_sec === 0) {
|
|
return ' ';
|
|
}
|
|
const roundTowardsZero = duration_sec > 0 ? Math.floor : Math.ceil;
|
|
return (
|
|
', ' +
|
|
roundTowardsZero(duration_sec / 86400) +
|
|
'd ' +
|
|
(roundTowardsZero(duration_sec / 3600) % 24) +
|
|
'h ' +
|
|
(roundTowardsZero(duration_sec / 60) % 60) +
|
|
'm ' +
|
|
(roundTowardsZero(duration_sec) % 60) +
|
|
's'
|
|
);
|
|
};
|