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 |
Var dateFormat = function (){ Var token =/d {1, 4} | m {1, 4} | yy (? : Yy )? | ([HhMsTt]) \ 1? | [Losz] | "[^"] * "| '[^'] * '/g, Timezone =/\ B (? : [PMCEA] [SDP] T | (? : Pacific | Mountain | Central | Eastern | Atlanta )(? : Standard | Daylight | Prevailing) Time | (? : GMT | UTC )(? : [-+] \ D {4 })?) \ B/g, TimezoneClip =/[^-+ \ dA-Z]/g, Pad = function (val, len ){ Val = String (val ); Len = len | 2; While (val. length <len) val = "0" + val; Return val; }; // Regexes and supporting functions are cached through closure Return function (date, mask, utc ){ Var dF = dateFormat; // You can't provide utc if you skip other args (use the "UTC:" mask prefix) If (arguments. length = 1 & Object. prototype. toString. call (date) = "[object String]" &! /\ D/. test (date )){ Mask = date; Date = undefined; } // Passing date through Date applies Date. parse, if necessary Date = date? New Date (date): new Date; If (isNaN (date) throw SyntaxError ("invalid date "); Mask = String (dF. masks [mask] | mask | dF. masks ["default"]); // Allow setting the utc argument via the mask If (mask. slice (0, 4) = "UTC :"){ Mask = mask. slice (4 ); Utc = true; } Var _ = utc? "GetUTC": "get ", D = date [_ + "Date"] (), D = date [_ + "Day"] (), M = date [_ + "Month"] (), Y = date [_ + "FullYear"] (), H = date [_ + "Hours"] (), M = date [_ + "Minutes"] (), S = date [_ + "Seconds"] (), L = date [_ + "Milliseconds"] (), O = utc? 0: date. getTimezoneOffset (), Flags = { D: d, Dd: pad (d ), Ddd: dF. i18n. dayNames [D], Dddd: dF. i18n. dayNames [D + 7], M: m + 1, Mm: pad (m + 1 ), Mmm: dF. i18n. monthNames [m], Mmmm: dF. i18n. monthNames [m + 12], Yy: String (y). slice (2 ), Yyyy: y, H: H % 12 | 12, Hh: pad (H % 12 | 12 ), H: H, HH: pad (H ), M: M, MM: pad (M ), S: s, Ss: pad (s ), L: pad (L, 3 ), L: pad (L> 99? Math. round (L/10): L ), T: H <12? "A": "p ", Tt: H <12? "Am": "pm ", T: H <12? "A": "P ", TT: H <12? "AM": "PM ", Z: utc? "UTC": (String (date). match (timezone) | [""]). pop (). replace (timezoneClip ,""), O: (o> 0? "-": "+") + Pad (Math. floor (Math. abs (o)/60) * 100 + Math. abs (o) % 60, 4 ), S: ["th", "st", "nd", "rd"] [d % 10> 3? 0: (d % 100-d % 10! = 10) * d % 10] }; Return mask. replace (token, function ($0 ){ Return $0 in flags? Flags [$0]: $0. slice (1, $0. length-1 ); }); }; }(); // Some common format strings DateFormat. masks = { "Default": "ddd mmm dd yyyy HH: MM: ss ", Expiry date: "m/d/yy ", MediumDate: "mmm d, yyyy ", LongDate: "mmmm d, yyyy ", FullDate: "dddd, mmmm d, yyyy ", Processing time: "h: mm tt ", MediumTime: "h: MM: ss TT ", LongTime: "h: MM: ss tt z ", IsoDate: "yyyy-mm-dd ", IsoTime: "HH: MM: ss ", IsoDateTime: "yyyy-mm-dd't'hh: MM: ss ", IsoUtcDateTime: "UTC: yyyy-mm-dd't'hh: MM: ss 'Z '" }; // Internationalization strings DateFormat. i18n = { DayNames :[ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat ", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], MonthNames :[ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct ", "Nov", "Dec ", "January", "February", "March", "maid", "May", "June", "July", "August", "September", "October ", "November", "December" ] }; // For convenience... Date. prototype. format = function (mask, utc ){ Return dateFormat (this, mask, utc ); }; |