-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtime.js
More file actions
122 lines (118 loc) · 2.79 KB
/
time.js
File metadata and controls
122 lines (118 loc) · 2.79 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
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// Generated by CoffeeScript 1.3.3
/**
Time module
@author Jacob Carlsson (Halmhatt)
*/
var time;
time = (function() {
var DAY, HOUR, MINUTE, SECOND, ceil, days, defaults, diff, floor, format, formatObj, hours, label, labels, milliseconds, minutes, my, round, seconds;
my = {};
floor = Math.floor;
round = Math.round;
ceil = Math.ceil;
SECOND = 1000;
MINUTE = SECOND * 60;
HOUR = MINUTE * 60;
DAY = HOUR * 24;
defaults = {
format: '${0} ${0.label}'
};
labels = {
milliseconds: 'millisecond/milliseconds',
seconds: 'second/seconds',
minutes: 'minute/minutes',
hours: 'hour/hours',
days: 'day/days'
};
diff = function(date1, date2) {
if (date2 == null) {
date2 = new Date();
}
return date2.getTime() - date1.getTime();
};
milliseconds = function(ms) {
return ms;
};
seconds = function(ms) {
return ms / 1000;
};
minutes = function(ms) {
return seconds(ms) / 60;
};
hours = function(ms) {
return minutes(ms) / 60;
};
days = function(ms) {
return hours(ms) / 24;
};
format = function(str, labelName, value) {
return str.replace('${' + labelName + '}', value);
};
label = function(label, num) {
var labelArr;
labelArr = labels[label].split('/');
if (num === 1) {
return labelArr[0];
} else {
return labelArr[1];
}
};
formatTime;
formatObj = function(diffObj, formatStr) {
var key, labelStr, _results;
_results = [];
for (key in labels) {
labelStr = labels[key];
_results.push(format(formatStr, key, label(labelStr)));
}
return _results;
};
/*
APIs
*/
my.toObject = function(date1, date2) {
diff = diff(date1, date2);
return {
milliseconds: floor(milliseconds(diff)),
seconds: floor(seconds(diff)),
minutes: floor(minutes(diff)),
hours: floor(hours(diff)),
days: floor(days(diff))
};
};
my.toRelativeObject = function(date1, date2) {
diff = diff(date1, date2);
days = floor(days(diff));
diff -= days * DAY;
hours = floor(hours(diff));
diff -= hours * HOUR;
minutes = floor(minutes(diff));
diff -= minutes * MINUTE;
seconds = floor(seconds(diff));
diff -= seconds * SECOND;
return {
milliseconds: diff,
seconds: seconds,
minutes: minutes,
hours: hours,
days: days
};
};
my.toString = function(date1, date2, format) {
var diffObj;
if (format == null) {
format = defaults.format;
}
diffObj = my.toObject(date1, date2);
return formatObj(diffObj, format);
};
my.toRelativeString = function(date1, date2, format) {
var diffObj;
if (format == null) {
format = defaults.format;
}
diffObj = my.toRelativeObject(date1, date2);
return formatObj(diffObj, format);
};
return my;
})();