gitscope
https://dev.kronoz.win/r/marzneshin.git
app/dashboard/src/utils/dateFormatter.ts · v0.2.1
Source
1 bf7c131 Mardin 2y ago import dayjs from 'dayjs';
2 a47eb4c Dawsh 2y ago
3 a47eb4c Dawsh 2y ago export const relativeExpiryDate = (expiryDate: number | null | undefined) => {
4 bf7c131 Mardin 2y ago let dateInfo = { status: '', time: '' };
5 a47eb4c Dawsh 2y ago if (expiryDate) {
6 a47eb4c Dawsh 2y ago if (
7 a47eb4c Dawsh 2y ago dayjs(expiryDate * 1000)
8 a47eb4c Dawsh 2y ago .utc()
9 a47eb4c Dawsh 2y ago .isAfter(dayjs().utc())
10 a47eb4c Dawsh 2y ago ) {
11 bf7c131 Mardin 2y ago dateInfo.status = 'expires';
12 a47eb4c Dawsh 2y ago } else {
13 bf7c131 Mardin 2y ago dateInfo.status = 'expired';
14 a47eb4c Dawsh 2y ago }
15 a47eb4c Dawsh 2y ago const durationSlots: string[] = [];
16 a47eb4c Dawsh 2y ago const duration = dayjs.duration(
17 a47eb4c Dawsh 2y ago dayjs(expiryDate * 1000)
18 a47eb4c Dawsh 2y ago .utc()
19 a47eb4c Dawsh 2y ago .diff(dayjs())
20 a47eb4c Dawsh 2y ago );
21 a47eb4c Dawsh 2y ago if (duration.years() != 0) {
22 a47eb4c Dawsh 2y ago durationSlots.push(
23 a47eb4c Dawsh 2y ago Math.abs(duration.years()) +
24 bf7c131 Mardin 2y ago ' year' +
25 bf7c131 Mardin 2y ago (Math.abs(duration.years()) != 1 ? 's' : '')
26 a47eb4c Dawsh 2y ago );
27 a47eb4c Dawsh 2y ago }
28 a47eb4c Dawsh 2y ago if (duration.months() != 0) {
29 a47eb4c Dawsh 2y ago durationSlots.push(
30 a47eb4c Dawsh 2y ago Math.abs(duration.months()) +
31 bf7c131 Mardin 2y ago ' month' +
32 bf7c131 Mardin 2y ago (Math.abs(duration.months()) != 1 ? 's' : '')
33 a47eb4c Dawsh 2y ago );
34 a47eb4c Dawsh 2y ago }
35 a47eb4c Dawsh 2y ago if (duration.days() != 0) {
36 a47eb4c Dawsh 2y ago durationSlots.push(
37 a47eb4c Dawsh 2y ago Math.abs(duration.days()) +
38 bf7c131 Mardin 2y ago ' day' +
39 bf7c131 Mardin 2y ago (Math.abs(duration.days()) != 1 ? 's' : '')
40 a47eb4c Dawsh 2y ago );
41 a47eb4c Dawsh 2y ago }
42 a47eb4c Dawsh 2y ago if (durationSlots.length === 0) {
43 a47eb4c Dawsh 2y ago if (duration.hours() != 0) {
44 a47eb4c Dawsh 2y ago durationSlots.push(
45 a47eb4c Dawsh 2y ago Math.abs(duration.hours()) +
46 bf7c131 Mardin 2y ago ' hour' +
47 bf7c131 Mardin 2y ago (Math.abs(duration.hours()) != 1 ? 's' : '')
48 a47eb4c Dawsh 2y ago );
49 a47eb4c Dawsh 2y ago }
50 a47eb4c Dawsh 2y ago if (duration.minutes() != 0) {
51 a47eb4c Dawsh 2y ago durationSlots.push(
52 a47eb4c Dawsh 2y ago Math.abs(duration.minutes()) +
53 bf7c131 Mardin 2y ago ' min' +
54 bf7c131 Mardin 2y ago (Math.abs(duration.minutes()) != 1 ? 's' : '')
55 a47eb4c Dawsh 2y ago );
56 a47eb4c Dawsh 2y ago }
57 a47eb4c Dawsh 2y ago }
58 bf7c131 Mardin 2y ago dateInfo.time = durationSlots.join(', ');
59 a47eb4c Dawsh 2y ago }
60 a47eb4c Dawsh 2y ago return dateInfo;
61 a47eb4c Dawsh 2y ago };