-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
64 lines (59 loc) · 1.65 KB
/
index.js
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
var MILISECOND = 1000
var SECOND = 1 * MILISECOND
var MINUTE = 60 * MILISECOND
var TWO_MINUTES = 2 * MINUTE
var HOUR = 60 * MINUTE
var DAY = 24 * HOUR
var WEEK = 7 * DAY
var MONTH = 30 * DAY
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
function Thenceforth(i, o) {
if (!o) o = {}
if (o.pretty) return prettyDate(i)
var now = new Date()
if (typeof i === 'string') i = new Date(i)
var diff = now - i
if (diff < MINUTE) {
return 'Just now'
}
if (diff < TWO_MINUTES) {
return '1 minute ago'
}
if (diff < HOUR) {
var minutes = Math.round(diff / MINUTE)
if (minutes == 1) return minutes + ' minute ago'
return minutes + ' minutes ago'
}
if (diff < DAY) {
var hours = Math.round(diff / HOUR)
if (hours == 1) return hours + ' hour ago'
return hours + ' hours ago'
}
if (diff < DAY * 2) {
return 'Yesterday'
}
if (diff < WEEK) {
var days = Math.round(diff / DAY)
if (days == 1) return days + 'day ago'
return days + ' days ago'
}
if (diff > WEEK) {
if (o.pretty !== false) return prettyDate(i)
var m = String(1 + i.getMonth())
if (m.length < 1) m = '0' + m
var d = String(i.getDate())
if (d.length < 1) d = '0' + d
var y = i.getFullYear()
return m + '/' + d + '/' + y
}
return String(i)
}
function prettyDate(i) {
var m = months[i.getMonth()]
var d = i.getDate()
var day = days[i.getDay() + 1]
var y = i.getFullYear()
return day + ' ' + m + ' ' + d + ', ' + y
}
module.exports = Thenceforth