Initial Release
[marketstoday] / src / qml / Library / js / ISODate.js
1 //Source: http://stackoverflow.com/questions/498578/how-can-i-convert-a-date-value-in-utc-format-to-a-date-object-in-javascript\r
2 var ISODate = {\r
3     convert : function (input){\r
4         if (!(typeof input === "string")) throw "ISODate, convert: input must be a string";\r
5         var d = input.match(/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2}):(\d{2}(?:\.\d+)?)(Z|(([+-])(\d{2}):(\d{2})))$/i);\r
6         if (!d) throw "ISODate, convert: Illegal format";\r
7         return new Date(\r
8                 Date.UTC(d[1],d[2]-1,d[3],d[4],d[5],d[6]|0,(d[6]*1000-((d[6]|0)*1000))|0,d[7]) +\r
9                 (d[7].toUpperCase() ==="Z" ? 0 : (d[10]*3600 + d[11]*60) * (d[9]==="-" ? 1000 : -1000))\r
10         );\r
11     },\r
12     format : function(t,utc){\r
13         if (typeof t === "string") t = this.convert(t);\r
14         if (!(t instanceof Date)) throw "ISODate, format: t is not a date object";\r
15         t = utc ?\r
16                 [t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds()] :\r
17                 [t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds()];\r
18 \r
19         return this.month[t[1]] + " " +this.ordinal(t[2]) + ", " +t[0] +\r
20                 " @ " + this.clock12(t[3],t[4]);\r
21     },\r
22     month:["January","February","March","April","May","June","July","September","October","November","December"],\r
23     ordinal:function(n) {\r
24         return n+(["th","st","nd","rd"][(( n % 100 / 10) | 0) ===1 ? 0 : n % 10 < 4 ? n % 10 : 0 ]);\r
25     },\r
26     clock12:function(h24,m,s){\r
27         h24%=24;\r
28         var h12 = h24 % 12;\r
29         if (h12===0) h12=12;\r
30         return h12 + ":" +\r
31                 (m<10 ? "0" + m : m) +\r
32                 (isFinite(s) ? ":" + (s<10?"0"+s:s): "") +\r
33                 (h24<12 ? "AM":"PM");\r
34     }\r
35 };\r