-
Notifications
You must be signed in to change notification settings - Fork 114
/
Copy pathTime.ts
85 lines (73 loc) · 2.29 KB
/
Time.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
export type TimeFromMillisecondsType = {
totalMilliseconds: number,
totalSeconds: number,
milliseconds: number,
seconds: number,
minutes: number,
hours: number,
days: number,
};
export type AMPMType = '' | 'pm' | 'am';
export type FormattedTimeFromMillisecondsType = {
milliseconds: number,
seconds: number,
minutes: number,
hours: number,
ampm?: AMPMType,
};
export default class Time {
static getTimeFromMilliseconds(millisecs: number, isCountDown = true): TimeFromMillisecondsType {
const totalSeconds = isCountDown ? Math.ceil(millisecs / 1000) : Math.floor(millisecs / 1000);
const days = Math.floor(totalSeconds / (60 * 60 * 24));
const hours = Math.floor((totalSeconds % (60 * 60 * 24)) / (60 * 60));
const minutes = Math.floor((totalSeconds % (60 * 60)) / 60);
const seconds = Math.floor(totalSeconds % 60);
const milliseconds = Math.floor(millisecs % 1000);
return {
totalMilliseconds: millisecs,
totalSeconds,
milliseconds,
seconds,
minutes,
hours,
days,
};
}
static getMillisecondsFromExpiry(expiry: Date): number {
const now = new Date().getTime();
const milliSecondsDistance = expiry?.getTime() - now;
return milliSecondsDistance > 0 ? milliSecondsDistance : 0;
}
static getMillisecondsFromPrevTime(prevTime: number): number {
const now = new Date().getTime();
const milliSecondsDistance = now - prevTime;
return milliSecondsDistance > 0 ? milliSecondsDistance : 0;
}
static getMillisecondsFromTimeNow(): number {
const now = new Date();
const currentTimestamp = now.getTime();
const offset = (now.getTimezoneOffset() * 60 * 1000);
return currentTimestamp - offset;
}
static getFormattedTimeFromMilliseconds(milliseconds: number, format?: '12-hour' | '24-hour'): FormattedTimeFromMillisecondsType {
const {
milliseconds: millisecVal,
seconds: secondsValue,
minutes,
hours,
} = Time.getTimeFromMilliseconds(milliseconds);
let ampm: AMPMType = '';
let hoursValue = hours;
if (format === '12-hour') {
ampm = hours >= 12 ? 'pm' : 'am';
hoursValue = hours % 12;
}
return {
milliseconds: millisecVal,
seconds: secondsValue,
minutes,
hours: hoursValue,
ampm,
};
}
}