diff options
Diffstat (limited to '')
-rw-r--r-- | js/strftime.js | 77 |
1 files changed, 23 insertions, 54 deletions
diff --git a/js/strftime.js b/js/strftime.js index 0933c27..b3698c8 100644 --- a/js/strftime.js +++ b/js/strftime.js | |||
@@ -27,80 +27,57 @@ function strftime (fmt, time) | |||
27 | var months = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]; | 27 | var months = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]; |
28 | var fmonths = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; | 28 | var fmonths = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; |
29 | 29 | ||
30 | function pad2 (number) | 30 | function pad2 (number) |
31 | { | 31 | { |
32 | return (number < 10 ? '0' : '') + number | 32 | return (number < 10 ? '0' : '') + number; |
33 | }; | 33 | } |
34 | 34 | ||
35 | function pad3(number) | 35 | function pad3(number) |
36 | { | 36 | { |
37 | return (number < 10 ? '00' : number < 100 ? '0' : '') + number | 37 | return (number < 10 ? '00' : number < 100 ? '0' : '') + number; |
38 | }; | 38 | } |
39 | 39 | ||
40 | function lpad (str, padString, length) | 40 | function format(match, opt) |
41 | { | ||
42 | while (str.length < length) | ||
43 | str = padString + str; | ||
44 | return str; | ||
45 | }; | ||
46 | |||
47 | function format(match, opt) | ||
48 | { | 41 | { |
49 | if (match === '%%') return '%'; | 42 | if (match === '%%') return '%'; |
50 | 43 | ||
51 | switch (opt) { | 44 | switch (opt) { |
52 | case 'a': | 45 | case 'a': |
53 | return days[d.getDay()]; | 46 | return days[d.getDay()]; |
54 | break; | ||
55 | case 'A': | 47 | case 'A': |
56 | return fdays[d.getDay()]; | 48 | return fdays[d.getDay()]; |
57 | break; | ||
58 | case 'b': | 49 | case 'b': |
59 | return months[d.getMonth()]; | 50 | return months[d.getMonth()]; |
60 | break; | ||
61 | case 'B': | 51 | case 'B': |
62 | return fmonths[d.getMonth()]; | 52 | return fmonths[d.getMonth()]; |
63 | break; | ||
64 | case 'c': | 53 | case 'c': |
65 | return d.toLocaleString(); | 54 | return d.toLocaleString(); |
66 | break; | ||
67 | case 'd': | 55 | case 'd': |
68 | return pad2(d.getDate()); | 56 | return pad2(d.getDate()); |
69 | break; | ||
70 | case 'H': | 57 | case 'H': |
71 | return pad2(d.getHours()); | 58 | return pad2(d.getHours()); |
72 | break; | 59 | case 'I': |
73 | case 'I': | ||
74 | var hours = d.getHours()%12; | 60 | var hours = d.getHours()%12; |
75 | return pad2(hours === 0 ? 12 : hours); | 61 | return pad2(hours === 0 ? 12 : hours); |
76 | break; | ||
77 | case 'j': | 62 | case 'j': |
78 | var d01 = new Date (d.getFullYear(), 0, 1); | 63 | var d01 = new Date (d.getFullYear(), 0, 1); |
79 | return pad3(Math.ceil((d.getTime()-d01.getTime())/86400000)+1); | 64 | return pad3(Math.ceil((d.getTime()-d01.getTime())/86400000)+1); |
80 | break; | 65 | case 'm': |
81 | case 'm': | ||
82 | return pad2(d.getMonth()); | 66 | return pad2(d.getMonth()); |
83 | break; | ||
84 | case 'M': | 67 | case 'M': |
85 | return pad2(d.getMinutes()); | 68 | return pad2(d.getMinutes()); |
86 | break; | ||
87 | case 'p': | 69 | case 'p': |
88 | return d.getHours() >= 12 ? 'PM' : 'AM'; | 70 | return d.getHours() >= 12 ? 'PM' : 'AM'; |
89 | break; | ||
90 | case 's': | 71 | case 's': |
91 | return pad2(d.getSeconds()); | 72 | return pad2(d.getSeconds()); |
92 | break; | ||
93 | case 'S': | 73 | case 'S': |
94 | return d.getTime()/1000; | 74 | return d.getTime()/1000; |
95 | break; | ||
96 | case 'u': | 75 | case 'u': |
97 | return d.getDay() === 0 ? 7 : d.getDay(); | 76 | return d.getDay() === 0 ? 7 : d.getDay(); |
98 | break; | 77 | case 'U': |
99 | case 'U': | ||
100 | var d01 = new Date(d.getFullYear(),0,1); | 78 | var d01 = new Date(d.getFullYear(),0,1); |
101 | return pad2(Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 6 - d.getDay())/7)); | 79 | return pad2(Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 6 - d.getDay())/7)); |
102 | break; | 80 | case 'V': |
103 | case 'V': | ||
104 | var d01 = new Date(d.getFullYear(), 0, 1); | 81 | var d01 = new Date(d.getFullYear(), 0, 1); |
105 | var w = Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 7 - (d.getDay() === 0 ? 7 : d.getDay()))/7); | 82 | var w = Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 7 - (d.getDay() === 0 ? 7 : d.getDay()))/7); |
106 | var d31 = new Date(d.getFullYear(), 11, 31); | 83 | var d31 = new Date(d.getFullYear(), 11, 31); |
@@ -115,32 +92,24 @@ function strftime (fmt, time) | |||
115 | if (w === 53 && d31.getDay() < 4) w = 1; | 92 | if (w === 53 && d31.getDay() < 4) w = 1; |
116 | } | 93 | } |
117 | return pad2(w); | 94 | return pad2(w); |
118 | break; | ||
119 | case 'w': | 95 | case 'w': |
120 | return d.getDay(); | 96 | return d.getDay(); |
121 | break; | 97 | case 'W': |
122 | case 'W': | 98 | var d01 = new Date(d.getFullYear(),0,1); |
123 | var d01 = new Date(d.getFullYear(),0,1); | ||
124 | return pad2(Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 7 - (d.getDay() === 0 ? 7 : d.getDay()))/7)); | 99 | return pad2(Math.round((Math.ceil((d.getTime()-d01.getTime())/86400000)+1 + 7 - (d.getDay() === 0 ? 7 : d.getDay()))/7)); |
125 | break; | ||
126 | case 'x': | 100 | case 'x': |
127 | return pad2(d.getDate())+'/'+pad2(d.getMonth())+'/'+d.getFullYear() | 101 | return pad2(d.getDate())+'/'+pad2(d.getMonth())+'/'+d.getFullYear(); |
128 | break; | ||
129 | case 'X': | 102 | case 'X': |
130 | return pad2(d.getHours())+':'+pad2(d.getMinutes())+':'+pad2(d.getSeconds()); | 103 | return pad2(d.getHours())+':'+pad2(d.getMinutes())+':'+pad2(d.getSeconds()); |
131 | break; | 104 | case 'y': |
132 | case 'y': | ||
133 | return pad2(d.getFullYear()%100); | 105 | return pad2(d.getFullYear()%100); |
134 | break; | ||
135 | case 'Y': | 106 | case 'Y': |
136 | return d.getFullYear(); | 107 | return d.getFullYear(); |
137 | break; | ||
138 | case 'Z': | 108 | case 'Z': |
139 | return d.toString().replace(/^.*\(([^)]+)\)$/, '$1'); | 109 | return d.toString().replace(/^.*\(([^)]+)\)$/, '$1'); |
140 | break; | ||
141 | default: | 110 | default: |
142 | return match; | 111 | return match; |
143 | } | 112 | } |
144 | }; | 113 | } |
145 | return fmt.replace(/%([aAbBcdHIjmMpsSUVwWxXyYZ%])/g, format); | 114 | return fmt.replace(/%([aAbBcdHIjmMpsSUVwWxXyYZ%])/g, format); |
146 | }; | 115 | } |