1f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)function arrayExists(array, x) { 2f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) for (var i = 0; i < array.length; i++) { 3f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (array[i] == x) return true; 4f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 5f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return false; 6f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)} 7f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 8f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles)Date.prototype.formatDate = function (input,time) { 9f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // formatDate : 10f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // a PHP date like function, for formatting date strings 11f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // See: http://www.php.net/date 12f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // 13f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // input : format string 14f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // time : epoch time (seconds, and optional) 15f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // 16f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // if time is not passed, formatting is based on 17f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // the current "this" date object's set time. 18f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // 19f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // supported: 20f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // a, A, B, d, D, F, g, G, h, H, i, j, l (lowercase L), L, 21f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // m, M, n, O, r, s, S, t, U, w, W, y, Y, z 22f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // 23f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // unsupported: 24f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // I (capital i), T, Z 25f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 26f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var switches = ["a", "A", "B", "d", "D", "F", "g", "G", "h", "H", 27f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "i", "j", "l", "L", "m", "M", "n", "O", "r", "s", 28f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "S", "t", "U", "w", "W", "y", "Y", "z"]; 29f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var daysLong = ["Sunday", "Monday", "Tuesday", "Wednesday", 30f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "Thursday", "Friday", "Saturday"]; 31f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var daysShort = ["Sun", "Mon", "Tue", "Wed", 32f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "Thu", "Fri", "Sat"]; 33f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var monthsShort = ["Jan", "Feb", "Mar", "Apr", 34f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "May", "Jun", "Jul", "Aug", "Sep", 35f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "Oct", "Nov", "Dec"]; 36f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var monthsLong = ["January", "February", "March", "April", 37f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "May", "June", "July", "August", "September", 38f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "October", "November", "December"]; 39f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var daysSuffix = ["st", "nd", "rd", "th", "th", "th", "th", // 1st - 7th 40f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "th", "th", "th", "th", "th", "th", "th", // 8th - 14th 41f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "th", "th", "th", "th", "th", "th", "st", // 15th - 21st 42f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "nd", "rd", "th", "th", "th", "th", "th", // 22nd - 28th 43f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "th", "th", "st"]; // 29th - 31st 44f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 45f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function a() { 46f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Lowercase Ante meridiem and Post meridiem 47f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return self.getHours() > 11? "pm" : "am"; 48f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 49f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function A() { 50f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Uppercase Ante meridiem and Post meridiem 51f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return self.getHours() > 11? "PM" : "AM"; 52f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 53f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 54f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function B(){ 55f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Swatch internet time. code simply grabbed from ppk, 56f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // since I was feeling lazy: 57f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // http://www.xs4all.nl/~ppk/js/beat.html 58f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var off = (self.getTimezoneOffset() + 60)*60; 59f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var theSeconds = (self.getHours() * 3600) + 60f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) (self.getMinutes() * 60) + 61f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) self.getSeconds() + off; 62f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var beat = Math.floor(theSeconds/86.4); 63f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (beat > 1000) beat -= 1000; 64f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (beat < 0) beat += 1000; 65f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if ((""+beat).length == 1) beat = "00"+beat; 66f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if ((""+beat).length == 2) beat = "0"+beat; 67f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return beat; 68f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 69f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) 70f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function d() { 71f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Day of the month, 2 digits with leading zeros 72f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return new String(self.getDate()).length == 1? 73f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "0"+self.getDate() : self.getDate(); 74f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 75f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function D() { 76f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // A textual representation of a day, three letters 77f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return daysShort[self.getDay()]; 78f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 79f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function F() { 80f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // A full textual representation of a month 81f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return monthsLong[self.getMonth()]; 82f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 83f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function g() { 84f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // 12-hour format of an hour without leading zeros 85f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return self.getHours() > 12? self.getHours()-12 : self.getHours(); 86f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 87f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function G() { 88f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // 24-hour format of an hour without leading zeros 89f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return self.getHours(); 90f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 91f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function h() { 92f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // 12-hour format of an hour with leading zeros 93f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if (self.getHours() > 12) { 94f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var s = new String(self.getHours()-12); 95f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return s.length == 1? 96f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "0"+ (self.getHours()-12) : self.getHours()-12; 97f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 98f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var s = new String(self.getHours()); 99f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return s.length == 1? 100f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "0"+self.getHours() : self.getHours(); 101f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 102f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 103f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function H() { 104f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // 24-hour format of an hour with leading zeros 105f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return new String(self.getHours()).length == 1? 106f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "0"+self.getHours() : self.getHours(); 107f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 108f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function i() { 109f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Minutes with leading zeros 110f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return new String(self.getMinutes()).length == 1? 111f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "0"+self.getMinutes() : self.getMinutes(); 112f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 113f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function j() { 114f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Day of the month without leading zeros 115f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return self.getDate(); 116f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 117f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function l() { 118f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // A full textual representation of the day of the week 119f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return daysLong[self.getDay()]; 120f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 121f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function L() { 122f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // leap year or not. 1 if leap year, 0 if not. 123f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // the logic should match iso's 8601 standard. 124f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) var y_ = Y(); 125f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) if ( 126f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) (y_ % 4 == 0 && y_ % 100 != 0) || 127f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) (y_ % 4 == 0 && y_ % 100 == 0 && y_ % 400 == 0) 128f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) ) { 129f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return 1; 130f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } else { 131f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return 0; 132f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 133f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 134f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function m() { 135f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Numeric representation of a month, with leading zeros 136f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return self.getMonth() < 9? 137f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) "0"+(self.getMonth()+1) : 138f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) self.getMonth()+1; 139f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 140f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function M() { 141f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // A short textual representation of a month, three letters 142f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return monthsShort[self.getMonth()]; 143f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) } 144f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) function n() { 145f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) // Numeric representation of a month, without leading zeros 146f4ed1cf5d184064c4cf0e4359c6d5d8aadb50afaTorne (Richard Coles) return self.getMonth()+1; 147 } 148 function O() { 149 // Difference to Greenwich time (GMT) in hours 150 var os = Math.abs(self.getTimezoneOffset()); 151 var h = ""+Math.floor(os/60); 152 var m = ""+(os%60); 153 h.length == 1? h = "0"+h:1; 154 m.length == 1? m = "0"+m:1; 155 return self.getTimezoneOffset() < 0 ? "+"+h+m : "-"+h+m; 156 } 157 function r() { 158 // RFC 822 formatted date 159 var r; // result 160 // Thu , 21 Dec 2000 161 r = D() + ", " + j() + " " + M() + " " + Y() + 162 // 16 : 01 : 07 +0200 163 " " + H() + ":" + i() + ":" + s() + " " + O(); 164 return r; 165 } 166 function S() { 167 // English ordinal suffix for the day of the month, 2 characters 168 return daysSuffix[self.getDate()-1]; 169 } 170 function s() { 171 // Seconds, with leading zeros 172 return new String(self.getSeconds()).length == 1? 173 "0"+self.getSeconds() : self.getSeconds(); 174 } 175 function t() { 176 177 // thanks to Matt Bannon for some much needed code-fixes here! 178 var daysinmonths = [null,31,28,31,30,31,30,31,31,30,31,30,31]; 179 if (L()==1 && n()==2) return 29; // leap day 180 return daysinmonths[n()]; 181 } 182 function U() { 183 // Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) 184 return Math.round(self.getTime()/1000); 185 } 186 function W() { 187 // Weeknumber, as per ISO specification: 188 // http://www.cl.cam.ac.uk/~mgk25/iso-time.html 189 190 // if the day is three days before newyears eve, 191 // there's a chance it's "week 1" of next year. 192 // here we check for that. 193 var beforeNY = 364+L() - z(); 194 var afterNY = z(); 195 var weekday = w()!=0?w()-1:6; // makes sunday (0), into 6. 196 if (beforeNY <= 2 && weekday <= 2-beforeNY) { 197 return 1; 198 } 199 // similarly, if the day is within threedays of newyears 200 // there's a chance it belongs in the old year. 201 var ny = new Date("January 1 " + Y() + " 00:00:00"); 202 var nyDay = ny.getDay()!=0?ny.getDay()-1:6; 203 if ( 204 (afterNY <= 2) && 205 (nyDay >=4) && 206 (afterNY >= (6-nyDay)) 207 ) { 208 // Since I'm not sure we can just always return 53, 209 // i call the function here again, using the last day 210 // of the previous year, as the date, and then just 211 // return that week. 212 var prevNY = new Date("December 31 " + (Y()-1) + " 00:00:00"); 213 return prevNY.formatDate("W"); 214 } 215 216 // week 1, is the week that has the first thursday in it. 217 // note that this value is not zero index. 218 if (nyDay <= 3) { 219 // first day of the year fell on a thursday, or earlier. 220 return 1 + Math.floor( ( z() + nyDay ) / 7 ); 221 } else { 222 // first day of the year fell on a friday, or later. 223 return 1 + Math.floor( ( z() - ( 7 - nyDay ) ) / 7 ); 224 } 225 } 226 function w() { 227 // Numeric representation of the day of the week 228 return self.getDay(); 229 } 230 231 function Y() { 232 // A full numeric representation of a year, 4 digits 233 234 // we first check, if getFullYear is supported. if it 235 // is, we just use that. ppks code is nice, but wont 236 // work with dates outside 1900-2038, or something like that 237 if (self.getFullYear) { 238 var newDate = new Date("January 1 2001 00:00:00 +0000"); 239 var x = newDate .getFullYear(); 240 if (x == 2001) { 241 // i trust the method now 242 return self.getFullYear(); 243 } 244 } 245 // else, do this: 246 // codes thanks to ppk: 247 // http://www.xs4all.nl/~ppk/js/introdate.html 248 var x = self.getYear(); 249 var y = x % 100; 250 y += (y < 38) ? 2000 : 1900; 251 return y; 252 } 253 function y() { 254 // A two-digit representation of a year 255 var y = Y()+""; 256 return y.substring(y.length-2,y.length); 257 } 258 function z() { 259 // The day of the year, zero indexed! 0 through 366 260 var t = new Date("January 1 " + Y() + " 00:00:00"); 261 var diff = self.getTime() - t.getTime(); 262 return Math.floor(diff/1000/60/60/24); 263 } 264 265 var self = this; 266 if (time) { 267 // save time 268 var prevTime = self.getTime(); 269 self.setTime(time); 270 } 271 272 var ia = input.split(""); 273 var ij = 0; 274 while (ia[ij]) { 275 if (ia[ij] == "\\") { 276 // this is our way of allowing users to escape stuff 277 ia.splice(ij,1); 278 } else { 279 if (arrayExists(switches,ia[ij])) { 280 ia[ij] = eval(ia[ij] + "()"); 281 } 282 } 283 ij++; 284 } 285 // reset time, back to what it was 286 if (prevTime) { 287 self.setTime(prevTime); 288 } 289 return ia.join(""); 290} 291 292var date = new Date("1/1/2007 1:11:11"); 293 294for (i = 0; i < 500; ++i) { 295 var shortFormat = date.formatDate("Y-m-d"); 296 var longFormat = date.formatDate("l, F d, Y g:i:s A"); 297 date.setTime(date.getTime() + 84266956); 298} 299 300