1 | (function ($) { |
---|
2 | |
---|
3 | var daysInWeek = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; |
---|
4 | var shortMonthsInYear = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; |
---|
5 | var longMonthsInYear = ["January", "February", "March", "April", "May", "June", |
---|
6 | "July", "August", "September", "October", "November", "December"]; |
---|
7 | var shortMonthsToNumber = []; |
---|
8 | shortMonthsToNumber["Jan"] = "01"; |
---|
9 | shortMonthsToNumber["Feb"] = "02"; |
---|
10 | shortMonthsToNumber["Mar"] = "03"; |
---|
11 | shortMonthsToNumber["Apr"] = "04"; |
---|
12 | shortMonthsToNumber["May"] = "05"; |
---|
13 | shortMonthsToNumber["Jun"] = "06"; |
---|
14 | shortMonthsToNumber["Jul"] = "07"; |
---|
15 | shortMonthsToNumber["Aug"] = "08"; |
---|
16 | shortMonthsToNumber["Sep"] = "09"; |
---|
17 | shortMonthsToNumber["Oct"] = "10"; |
---|
18 | shortMonthsToNumber["Nov"] = "11"; |
---|
19 | shortMonthsToNumber["Dec"] = "12"; |
---|
20 | |
---|
21 | $.format = (function () { |
---|
22 | function strDay(value) { |
---|
23 | return daysInWeek[parseInt(value, 10)] || value; |
---|
24 | } |
---|
25 | |
---|
26 | function strMonth(value) { |
---|
27 | var monthArrayIndex = parseInt(value, 10) - 1; |
---|
28 | return shortMonthsInYear[monthArrayIndex] || value; |
---|
29 | } |
---|
30 | |
---|
31 | function strLongMonth(value) { |
---|
32 | var monthArrayIndex = parseInt(value, 10) - 1; |
---|
33 | return longMonthsInYear[monthArrayIndex] || value; |
---|
34 | } |
---|
35 | |
---|
36 | var parseMonth = function (value) { |
---|
37 | return shortMonthsToNumber[value] || value; |
---|
38 | }; |
---|
39 | |
---|
40 | var parseTime = function (value) { |
---|
41 | var retValue = value; |
---|
42 | var millis = ""; |
---|
43 | if (retValue.indexOf(".") !== -1) { |
---|
44 | var delimited = retValue.split('.'); |
---|
45 | retValue = delimited[0]; |
---|
46 | millis = delimited[1]; |
---|
47 | } |
---|
48 | |
---|
49 | var values3 = retValue.split(":"); |
---|
50 | |
---|
51 | if (values3.length === 3) { |
---|
52 | hour = values3[0]; |
---|
53 | minute = values3[1]; |
---|
54 | second = values3[2]; |
---|
55 | |
---|
56 | return { |
---|
57 | time: retValue, |
---|
58 | hour: hour, |
---|
59 | minute: minute, |
---|
60 | second: second, |
---|
61 | millis: millis |
---|
62 | }; |
---|
63 | } else { |
---|
64 | return { |
---|
65 | time: "", |
---|
66 | hour: "", |
---|
67 | minute: "", |
---|
68 | second: "", |
---|
69 | millis: "" |
---|
70 | }; |
---|
71 | } |
---|
72 | }; |
---|
73 | |
---|
74 | return { |
---|
75 | date: function (value, format) { |
---|
76 | /* |
---|
77 | value = new java.util.Date() |
---|
78 | 2009-12-18 10:54:50.546 |
---|
79 | */ |
---|
80 | try { |
---|
81 | var date = null; |
---|
82 | var year = null; |
---|
83 | var month = null; |
---|
84 | var dayOfMonth = null; |
---|
85 | var dayOfWeek = null; |
---|
86 | var time = null; |
---|
87 | if (typeof value.getFullYear === "function") { |
---|
88 | year = value.getFullYear(); |
---|
89 | month = value.getMonth() + 1; |
---|
90 | dayOfMonth = value.getDate(); |
---|
91 | dayOfWeek = value.getDay(); |
---|
92 | time = parseTime(value.toTimeString()); |
---|
93 | } else if (value.search(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.?\d{0,3}[-+]?\d{2}:\d{2}/) != -1) { /* 2009-04-19T16:11:05+02:00 */ |
---|
94 | var values = value.split(/[T\+-]/); |
---|
95 | year = values[0]; |
---|
96 | month = values[1]; |
---|
97 | dayOfMonth = values[2]; |
---|
98 | time = parseTime(values[3].split(".")[0]); |
---|
99 | date = new Date(year, month - 1, dayOfMonth); |
---|
100 | dayOfWeek = date.getDay(); |
---|
101 | } else { |
---|
102 | var values = value.split(" "); |
---|
103 | switch (values.length) { |
---|
104 | case 6: |
---|
105 | /* Wed Jan 13 10:43:41 CET 2010 */ |
---|
106 | year = values[5]; |
---|
107 | month = parseMonth(values[1]); |
---|
108 | dayOfMonth = values[2]; |
---|
109 | time = parseTime(values[3]); |
---|
110 | date = new Date(year, month - 1, dayOfMonth); |
---|
111 | dayOfWeek = date.getDay(); |
---|
112 | break; |
---|
113 | case 2: |
---|
114 | /* 2009-12-18 10:54:50.546 */ |
---|
115 | var values2 = values[0].split("-"); |
---|
116 | year = values2[0]; |
---|
117 | month = values2[1]; |
---|
118 | dayOfMonth = values2[2]; |
---|
119 | time = parseTime(values[1]); |
---|
120 | date = new Date(year, month - 1, dayOfMonth); |
---|
121 | dayOfWeek = date.getDay(); |
---|
122 | break; |
---|
123 | case 7: |
---|
124 | /* Tue Mar 01 2011 12:01:42 GMT-0800 (PST) */ |
---|
125 | case 9: |
---|
126 | /*added by Larry, for Fri Apr 08 2011 00:00:00 GMT+0800 (China Standard Time) */ |
---|
127 | case 10: |
---|
128 | /* added by Larry, for Fri Apr 08 2011 00:00:00 GMT+0200 (W. Europe Daylight Time) */ |
---|
129 | year = values[3]; |
---|
130 | month = parseMonth(values[1]); |
---|
131 | dayOfMonth = values[2]; |
---|
132 | time = parseTime(values[4]); |
---|
133 | date = new Date(year, month - 1, dayOfMonth); |
---|
134 | dayOfWeek = date.getDay(); |
---|
135 | break; |
---|
136 | default: |
---|
137 | return value; |
---|
138 | } |
---|
139 | } |
---|
140 | |
---|
141 | var pattern = ""; |
---|
142 | var retValue = ""; |
---|
143 | /* |
---|
144 | Issue 1 - variable scope issue in format.date |
---|
145 | Thanks jakemonO |
---|
146 | */ |
---|
147 | for (var i = 0; i < format.length; i++) { |
---|
148 | var currentPattern = format.charAt(i); |
---|
149 | pattern += currentPattern; |
---|
150 | switch (pattern) { |
---|
151 | case "ddd": |
---|
152 | retValue += strDay(dayOfWeek); |
---|
153 | pattern = ""; |
---|
154 | break; |
---|
155 | case "dd": |
---|
156 | if (format.charAt(i + 1) == "d") { |
---|
157 | break; |
---|
158 | } |
---|
159 | if (String(dayOfMonth).length === 1) { |
---|
160 | dayOfMonth = '0' + dayOfMonth; |
---|
161 | } |
---|
162 | retValue += dayOfMonth; |
---|
163 | pattern = ""; |
---|
164 | break; |
---|
165 | case "MMMM": |
---|
166 | retValue += strLongMonth(month); |
---|
167 | pattern = ""; |
---|
168 | break; |
---|
169 | case "MMM": |
---|
170 | if (format.charAt(i + 1) === "M") { |
---|
171 | break; |
---|
172 | } |
---|
173 | retValue += strMonth(month); |
---|
174 | pattern = ""; |
---|
175 | break; |
---|
176 | case "MM": |
---|
177 | if (format.charAt(i + 1) == "M") { |
---|
178 | break; |
---|
179 | } |
---|
180 | if (String(month).length === 1) { |
---|
181 | month = '0' + month; |
---|
182 | } |
---|
183 | retValue += month; |
---|
184 | pattern = ""; |
---|
185 | break; |
---|
186 | case "yyyy": |
---|
187 | retValue += year; |
---|
188 | pattern = ""; |
---|
189 | break; |
---|
190 | case "HH": |
---|
191 | retValue += time.hour; |
---|
192 | pattern = ""; |
---|
193 | break; |
---|
194 | case "hh": |
---|
195 | /* time.hour is "00" as string == is used instead of === */ |
---|
196 | retValue += (time.hour == 0 ? 12 : time.hour < 13 ? time.hour : time.hour - 12); |
---|
197 | pattern = ""; |
---|
198 | break; |
---|
199 | case "mm": |
---|
200 | retValue += time.minute; |
---|
201 | pattern = ""; |
---|
202 | break; |
---|
203 | case "ss": |
---|
204 | /* ensure only seconds are added to the return string */ |
---|
205 | retValue += time.second.substring(0, 2); |
---|
206 | pattern = ""; |
---|
207 | break; |
---|
208 | case "SSS": |
---|
209 | retValue += time.millis.substring(0, 3); |
---|
210 | pattern = ""; |
---|
211 | break; |
---|
212 | case "a": |
---|
213 | retValue += time.hour >= 12 ? "PM" : "AM"; |
---|
214 | pattern = ""; |
---|
215 | break; |
---|
216 | case " ": |
---|
217 | retValue += currentPattern; |
---|
218 | pattern = ""; |
---|
219 | break; |
---|
220 | case "/": |
---|
221 | retValue += currentPattern; |
---|
222 | pattern = ""; |
---|
223 | break; |
---|
224 | case ":": |
---|
225 | retValue += currentPattern; |
---|
226 | pattern = ""; |
---|
227 | break; |
---|
228 | default: |
---|
229 | if (pattern.length === 2 && pattern.indexOf("y") !== 0 && pattern != "SS") { |
---|
230 | retValue += pattern.substring(0, 1); |
---|
231 | pattern = pattern.substring(1, 2); |
---|
232 | } else if ((pattern.length === 3 && pattern.indexOf("yyy") === -1)) { |
---|
233 | pattern = ""; |
---|
234 | } |
---|
235 | } |
---|
236 | } |
---|
237 | return retValue; |
---|
238 | } catch (e) { |
---|
239 | console.log(e); |
---|
240 | return value; |
---|
241 | } |
---|
242 | } |
---|
243 | }; |
---|
244 | }()); |
---|
245 | }(jQuery)); |
---|
246 | |
---|
247 | |
---|
248 | $(document).ready(function () { |
---|
249 | $(".shortDateFormat").each(function (idx, elem) { |
---|
250 | if ($(elem).is(":input")) { |
---|
251 | $(elem).val($.format.date($(elem).val(), "dd/MM/yyyy")); |
---|
252 | } else { |
---|
253 | $(elem).text($.format.date($(elem).text(), "dd/MM/yyyy")); |
---|
254 | } |
---|
255 | }); |
---|
256 | $(".longDateFormat").each(function (idx, elem) { |
---|
257 | if ($(elem).is(":input")) { |
---|
258 | $(elem).val($.format.date($(elem).val(), "dd/MM/yyyy hh:mm:ss")); |
---|
259 | } else { |
---|
260 | $(elem).text($.format.date($(elem).text(), "dd/MM/yyyy hh:mm:ss")); |
---|
261 | } |
---|
262 | }); |
---|
263 | }); |
---|