Files
stacjownik/src/composables/time.ts
T

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'
});
}