2024-06-03 03:54:02 +00:00
|
|
|
// in miliseconds
|
|
|
|
export const units = {
|
|
|
|
year: 24 * 60 * 60 * 1000 * 365,
|
|
|
|
month: (24 * 60 * 60 * 1000 * 365) / 12,
|
|
|
|
day: 24 * 60 * 60 * 1000,
|
|
|
|
hour: 60 * 60 * 1000,
|
|
|
|
minute: 60 * 1000,
|
|
|
|
second: 1000,
|
|
|
|
};
|
|
|
|
|
|
|
|
export function getRelativeTime(d1, d2, locale) {
|
|
|
|
let rtf = new Intl.RelativeTimeFormat(locale, {
|
|
|
|
numeric: "auto",
|
|
|
|
});
|
|
|
|
|
|
|
|
let elapsed = d1 - d2;
|
|
|
|
|
|
|
|
// "Math.abs" accounts for both "past" & "future" scenarios
|
|
|
|
for (var u in units)
|
|
|
|
if (Math.abs(elapsed) > units[u] || u == "second")
|
|
|
|
return rtf.format(Math.round(elapsed / units[u]), u);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getMinutesDifference(d1, d2) {
|
|
|
|
return (d2.getTime() - d1.getTime()) / units.minute;
|
|
|
|
}
|
2024-06-04 22:54:40 +00:00
|
|
|
|
|
|
|
export function sameDay(d1, d2) {
|
|
|
|
return Math.abs(d2.getTime() - d1.getTime()) < units.day;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function DatetoLocaleDynamicString(d1, ref, lang) {
|
|
|
|
if (sameDay(d1, ref))
|
|
|
|
return d1.toLocaleTimeString(lang, {
|
|
|
|
timeStyle: "short",
|
|
|
|
});
|
|
|
|
else
|
|
|
|
return d1.toLocaleDateString(lang, {
|
|
|
|
dateStyle: "short",
|
|
|
|
});
|
|
|
|
}
|