/
time.js
120 lines (120 loc) · 3.35 KB
/
time.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
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
// Generated by CoffeeScript 1.7.1
(function(WIN) {
var DAY, DEFAULT_FORMAT, HOUR, MINUTE, MONTH, SECOND, YEAR, angularApp, entry, exports, getFullTime, map, replace, time, two, unify;
YEAR = "year";
MONTH = "month";
DAY = "day";
HOUR = "hour";
MINUTE = "minute";
SECOND = "second";
DEFAULT_FORMAT = "%y-%M-%d %h:%m:%s";
map = {
"%y": YEAR,
"%M": MONTH,
"%d": DAY,
"%h": HOUR,
"%m": MINUTE,
"%s": SECOND
};
unify = function(time) {
time -= 0;
if (("" + time).length === 10) {
time *= 1000;
}
return time;
};
two = function(str) {
var s;
s = "" + str;
if (s.length === 1) {
s = "0" + s;
}
return s;
};
replace = function(str, src, dst) {
var reg;
reg = new RegExp(src, "g");
return str.replace(reg, dst);
};
getFullTime = function(time) {
var date;
date = new Date(unify(time));
return {
year: date.getFullYear(),
month: two(date.getMonth() + 1),
day: two(date.getDate()),
hour: two(date.getHours()),
minute: two(date.getMinutes()),
second: two(date.getSeconds())
};
};
time = {
"default": function(time, format) {
var fullTime, ret, src;
if (format && (typeof format) !== "string") {
throw new Error("format must be a string.");
}
fullTime = getFullTime(time);
ret = format || DEFAULT_FORMAT;
for (src in map) {
ret = replace(ret, src, fullTime[map[src]]);
}
return ret;
},
human: function(time) {
var ago, curTime, diff, int;
time = unify(time);
int = parseInt;
curTime = +new Date();
diff = curTime - time;
ago = "";
if (1000 * 60 > diff) {
ago = "刚刚";
} else if (1000 * 60 <= diff && 1000 * 60 * 60 > diff) {
ago = int(diff / (1000 * 60)) + "分钟前";
} else if (1000 * 60 * 60 <= diff && 1000 * 60 * 60 * 24 > diff) {
ago = int(diff / (1000 * 60 * 60)) + "小时前";
} else if (1000 * 60 * 60 * 24 <= diff && 1000 * 60 * 60 * 24 * 30 > diff) {
ago = int(diff / (1000 * 60 * 60 * 24)) + "天前";
} else if (1000 * 60 * 60 * 24 * 30 <= diff && 1000 * 60 * 60 * 24 * 30 * 12 > diff) {
ago = int(diff / (1000 * 60 * 60 * 24 * 30)) + "月前";
} else {
ago = int(diff / (1000 * 60 * 60 * 24 * 30 * 12)) + "年前";
}
return ago;
}
};
entry = time["default"];
entry.human = entry.ago = time.human;
if (typeof module !== "undefined" && module.exports) {
return module.exports = exports = entry;
} else if (typeof WIN["define"] === "function") {
return define(function(require, exports, module) {
return module.exports = exports = function() {
return entry;
};
});
} else if (typeof WIN["angular"] === "object") {
angularApp = angular.module("binnng/time", []);
angularApp.factory("$time", function() {
return entry;
});
angularApp.filter("ago", function() {
return function(time) {
return entry.ago(time);
};
});
angularApp.filter("date", function() {
return function(time) {
return entry(time, "%y年%M月%d日");
};
});
return angularApp.filter("datetime", function() {
return function(time) {
return entry(time, DEFAULT_FORMAT);
};
});
} else {
return WIN["Time"] = entry;
}
})(window);