1 dump('entering util/date.js\n');
3 if (typeof util == 'undefined') var util = {};
6 util.date.EXPORT_OK = [
7 'timer_init', 'timer_elapsed', 'db_date2Date', 'formatted_date', 'interval_to_seconds'
9 util.date.EXPORT_TAGS = { ':all' : util.date.EXPORT_OK };
11 util.date.timer_init = function (id) {
12 if (typeof util.date.timer_init.prototype.timer == 'undefined') {
13 util.date.timer_init.prototype.timer = {};
15 util.date.timer_init.prototype.timer[id] = (new Date).getTime();
18 util.date.timer_elapsed = function (id) {
19 if (! util.date.timer_init.prototype.timer[id]) { util.date.timer_init(id); }
20 var ms = (new Date).getTime() - util.date.timer_init.prototype.timer[id];
21 return( ms + 'ms (' + ms/1000 + 's)' );
24 util.date.db_date2Date = function (date) {
25 var y = date.substr(0,4);
26 var mo = date.substr(5,2);
27 var d = date.substr(8,2);
28 var h = date.substr(11,2);
29 var mi = date.substr(14,2);
30 var s = date.substr(17,2);
31 return new Date(y,mo,d,h,mi,s);
34 util.date.formatted_date = function (date,format) {
35 // pass in a Date object or epoch seconds or a postgres style date string (2005-07-19 10:38:25.211964-04)
36 if (typeof(date) == 'string') {
37 if (date.match(/:/) || date.match(/-/)) {
38 date = util.date.db_date2Date(date);
40 date = new Date( parseInt( date + '000' ) );
42 } else if (typeof(date) == 'undefined') {
43 date = new Date( parseInt( date + '000' ) );
45 var mm = date.getMonth() + 1; mm = mm.toString(); if (mm.length == 1) mm = '0' +mm;
46 var dd = date.getDate().toString(); if (dd.length == 1) dd = '0' +dd;
47 var yyyy = date.getFullYear().toString();
48 var yy = yyyy.substr(2);
49 var H = date.getHours(); H = H.toString(); if (H.length == 1) H = '0' + H;
50 var I = date.getHours(); if (I > 12) I -= 12; I = I.toString();
51 var M = date.getMinutes(); M = M.toString(); if (M.length == 1) M = '0' + M;
53 if (s == '') { s = '%F %H:%M'; }
54 s = s.replace( /%m/g, mm );
55 s = s.replace( /%d/g, dd );
56 s = s.replace( /%Y/g, yyyy );
57 s = s.replace( /%D/g, mm + '/' + dd + '/' + yy );
58 s = s.replace( /%F/g, yyyy + '-' + mm + '-' + dd );
59 s = s.replace( /%H/g, H );
60 s = s.replace( /%I/g, I );
61 s = s.replace( /%M/g, M );
65 util.date.interval_to_seconds = function ( $interval ) {
67 $interval = $interval.replace( /and/, ',' );
68 $interval = $interval.replace( /,/, ' ' );
71 var results = $interval.match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/g);
72 for (var i in results) {
73 var result = results[i].match( /\s*\+?\s*(\d+)\s*(\w{1})\w*\s*/ );
74 if (result[2] == 's') $amount += result[1] ;
75 if (result[2] == 'm') $amount += 60 * result[1] ;
76 if (result[2] == 'h') $amount += 60 * 60 * result[1] ;
77 if (result[2] == 'd') $amount += 60 * 60 * 24 * result[1] ;
78 if (result[2] == 'w') $amount += 60 * 60 * 24 * 7 * result[1] ;
79 if (result[2] == 'M') $amount += ((60 * 60 * 24 * 365)/12) * result[1] ;
80 if (result[2] == 'y') $amount += 60 * 60 * 24 * 365 * result[1] ;
85 dump('exiting util/date.js\n');