forked from dalibo/pev2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.ts
More file actions
52 lines (51 loc) · 1.58 KB
/
Copy pathutils.ts
File metadata and controls
52 lines (51 loc) · 1.58 KB
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
export function time_ago(time) {
switch (typeof time) {
case "number":
break
case "string":
time = +new Date(time)
break
case "object":
if (time.constructor === Date) time = time.getTime()
break
default:
time = +new Date()
}
const time_formats = [
[2, "1 second ago", "1 second from now"],
[60, "seconds", 1], // 60
[120, "1 minute ago", "1 minute from now"], // 60*2
[3600, "minutes", 60], // 60*60, 60
[7200, "1 hour ago", "1 hour from now"], // 60*60*2
[86400, "hours", 3600], // 60*60*24, 60*60
[172800, "Yesterday", "Tomorrow"], // 60*60*24*2
[604800, "days", 86400], // 60*60*24*7, 60*60*24
[1209600, "Last week", "Next week"], // 60*60*24*7*4*2
[2419200, "weeks", 604800], // 60*60*24*7*4, 60*60*24*7
[4838400, "Last month", "Next month"], // 60*60*24*7*4*2
[29030400, "months", 2419200], // 60*60*24*7*4*12, 60*60*24*7*4
[58060800, "Last year", "Next year"], // 60*60*24*7*4*12*2
[2903040000, "years", 29030400], // 60*60*24*7*4*12*100, 60*60*24*7*4*12
]
let seconds = (+new Date() - time) / 1000,
token = "ago",
list_choice = 1
if (seconds == 0) {
return "Just now"
}
if (seconds < 0) {
seconds = Math.abs(seconds)
token = "from now"
list_choice = 2
}
let i = 0,
format: (string | number)[]
while ((format = time_formats[i++]))
if (seconds < format[0]) {
if (typeof format[2] == "string") return format[list_choice]
else {
return Math.floor(seconds / format[2]) + " " + format[1] + " " + token
}
}
return time
}