source: trunk/prototype/app/plugins/jquery.dateFormat/jquery.dateFormat.js @ 5341

Revision 5341, 10.7 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2434 - Commit inicial do novo módulo de agenda do Expresso - expressoCalendar

Line 
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});
Note: See TracBrowser for help on using the repository browser.