73 lines
1.8 KiB
TypeScript
73 lines
1.8 KiB
TypeScript
|
import dayjs from "dayjs";
|
||
|
import relative from "dayjs/plugin/relativeTime";
|
||
|
import updateLocale from "dayjs/plugin/updateLocale";
|
||
|
export function relativeTimeUnix(timestamp: number) {
|
||
|
const config = {
|
||
|
thresholds: [
|
||
|
{ l: "s", r: 1 },
|
||
|
{ l: "m", r: 1 },
|
||
|
{ l: "mm", r: 59, d: "minute" },
|
||
|
{ l: "h", r: 1 },
|
||
|
{ l: "hh", r: 23, d: "hour" },
|
||
|
{ l: "d", r: 1 },
|
||
|
{ l: "dd", r: 364, d: "day" },
|
||
|
{ l: "y", r: 1 },
|
||
|
{ l: "yy", d: "year" },
|
||
|
],
|
||
|
rounding: Math.floor,
|
||
|
};
|
||
|
dayjs.extend(updateLocale);
|
||
|
|
||
|
dayjs.updateLocale("en", {
|
||
|
relativeTime: {
|
||
|
future: "in %s",
|
||
|
past: "%s ago",
|
||
|
s: "%s seconds",
|
||
|
m: "1 min",
|
||
|
mm: "%d mins",
|
||
|
h: "1 hour",
|
||
|
hh: "%d hours",
|
||
|
d: "1 day",
|
||
|
dd: "%d days",
|
||
|
y: "1 year",
|
||
|
yy: "%d years",
|
||
|
},
|
||
|
});
|
||
|
dayjs.extend(relative, config);
|
||
|
return dayjs(timestamp * 1000).fromNow();
|
||
|
}
|
||
|
export function relativeTime(timestamp: Date) {
|
||
|
const config = {
|
||
|
thresholds: [
|
||
|
{ l: "s", r: 1 },
|
||
|
{ l: "m", r: 1 },
|
||
|
{ l: "mm", r: 59, d: "minute" },
|
||
|
{ l: "h", r: 1 },
|
||
|
{ l: "hh", r: 23, d: "hour" },
|
||
|
{ l: "d", r: 1 },
|
||
|
{ l: "dd", r: 364, d: "day" },
|
||
|
{ l: "y", r: 1 },
|
||
|
{ l: "yy", d: "year" },
|
||
|
],
|
||
|
rounding: Math.floor,
|
||
|
};
|
||
|
dayjs.extend(updateLocale);
|
||
|
|
||
|
dayjs.updateLocale("en", {
|
||
|
relativeTime: {
|
||
|
future: "in %s",
|
||
|
past: "%s ago",
|
||
|
s: "%s seconds",
|
||
|
m: "1 min",
|
||
|
mm: "%d mins",
|
||
|
h: "1 hour",
|
||
|
hh: "%d hours",
|
||
|
d: "1 day",
|
||
|
dd: "%d days",
|
||
|
y: "1 year",
|
||
|
yy: "%d years",
|
||
|
},
|
||
|
});
|
||
|
dayjs.extend(relative, config);
|
||
|
return dayjs(timestamp).fromNow();
|
||
|
}
|