mirror of
https://github.com/Spythere/stacjownik.git
synced 2026-05-03 05:18:11 +00:00
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { useI18n } from 'vue-i18n';
|
|
|
|
export function calculateDuration(timestampMs: number) {
|
|
const secondsTotal = Math.floor(timestampMs / 1000);
|
|
const minsTotal = Math.round(timestampMs / 60000);
|
|
const hoursTotal = Math.floor(minsTotal / 60);
|
|
const minsInHour = minsTotal % 60;
|
|
|
|
return {
|
|
secondsTotal,
|
|
minsTotal,
|
|
hoursTotal,
|
|
minsInHour
|
|
};
|
|
}
|
|
|
|
export function humanizeDuration(timestampMs: number, showSeconds = false) {
|
|
const { t } = useI18n();
|
|
|
|
const duration = calculateDuration(timestampMs);
|
|
|
|
return duration.minsTotal >= 60
|
|
? `${t('journal.hours', { value: duration.hoursTotal }, duration.hoursTotal)} ${t(
|
|
'journal.minutes',
|
|
{ value: duration.minsInHour },
|
|
duration.minsInHour
|
|
)}`
|
|
: showSeconds && duration.secondsTotal <= 60
|
|
? t('journal.seconds', { value: duration.secondsTotal }, duration.secondsTotal)
|
|
: t('journal.minutes', { value: duration.minsTotal }, duration.minsTotal);
|
|
}
|
|
|
|
export function dateToLocaleString(date: Date, dateOptions: Intl.DateTimeFormatOptions) {
|
|
const { locale } = useI18n();
|
|
|
|
return date.toLocaleString(locale.value == 'pl' ? 'pl-PL' : 'en-GB', dateOptions);
|
|
}
|
|
|
|
export function timestampToTimeString(timestamp: number) {
|
|
return new Date(timestamp).toLocaleTimeString('pl-PL', {
|
|
hour: '2-digit',
|
|
minute: '2-digit'
|
|
});
|
|
}
|