aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/js/strftime.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/strftime.js')
-rw-r--r--js/strftime.js77
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}