Subversion Repositories wimsdev

Rev

Rev 20 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 reyssat 1
/*
2
        DynAPI Distribution
10534 obado 3
        dynapi.functions.Date extension
20 reyssat 4
*/
5
 
6
var f = dynapi.functions;
7
f.Date = {}; // used by dynapi.library
8
 
9
// Date Functions --------------------------------------
10
 
11
f.dateAdd = function(interval,n,dt){
10534 obado 12
        if(!interval||!n||!dt) return;
20 reyssat 13
        var s=1,m=1,h=1,dd=1,i=interval;
14
        if(i=='month'||i=='year'){
15
                dt=new Date(dt);
16
                if(i=='month') dt.setMonth(dt.getMonth()+n);
10534 obado 17
                if(i=='year') dt.setFullYear(dt.getFullYear()+n);
20 reyssat 18
        }else if (i=='second'||i=='minute'||i=='hour'||i=='day'){
19
                dt=Date.parse(dt);
20
                if(isNaN(dt)) return;
21
                if(i=='second') s=n;
22
                if(i=='minute'){s=60;m=n}
23
                if(i=='hour'){s=60;m=60;h=n};
24
                if(i=='day'){s=60;m=60;h=24;dd=n};
25
                dt+=((((1000*s)*m)*h)*dd);
26
                dt=new Date(dt);
27
        }
28
        return dt
29
};
30
f.dateDiff=function(interval,dt1,dt2){
10534 obado 31
        if(!interval||!dt1||!dt2) return;
32
        var v,s=1,m=1,h=1,dd=1,i=interval;
20 reyssat 33
        if(i=='month'||i=='year'){
34
                dt1=new Date(dt1);
35
                dt2=new Date(dt2);
36
                years=dt2.getFullYear()-dt1.getFullYear();
37
                if (i=='year') v=years;
38
                else if(i=='month') {
39
                        v=(dt2.getMonth()+1)-(dt1.getMonth()+1);
10534 obado 40
                        if(years!=0) v+=(years*12);
20 reyssat 41
                }
42
        }else if (i=='second'||i=='minute'||i=='hour'||i=='day'){
43
                dt1=Date.parse(dt1);
44
                dt2=Date.parse(dt2);
45
                if(isNaN(dt1)||isNaN(dt2)) return;
46
                v=dt2-dt1;
47
                if(i=='second') s=1000;
48
                if(i=='minute') s=60000;
49
                if(i=='hour'){s=60000;m=60};
50
                if(i=='day'){s=60000;m=60;h=24;};
51
                v=((((v/s)/m)/h)/dd);
52
        }
53
        return v;
54
};
55
f.formatDate = function(date,format){
56
        if(!date) return '';
57
        var dt=new Date(date);
58
        var mm=dt.getMonth();
59
        var dd=dt.getDate();
60
        var day=dt.getDay();
61
        var yyyy=dt.getFullYear();
62
        var hh=dt.getHours();
63
        var nn=dt.getMinutes();
64
        var ss=dt.getSeconds();
65
        var ampm
66
 
67
        var days=['Sunday','Monday','Teusday','Wednesday','Thursday','Friday','Saturday'];
68
        var months=['January','February','March','April','May','June','July','August','September','October','November','December'];
69
 
70
        format=(format)? (format+'').toLowerCase():'dddd, mmmm dd, yyyy hh:nn:ss ampm';
71
        format=format.replace('mmmm',months[mm]);
72
        format=format.replace('mmm',months[mm].substr(0,3));
73
        format=format.replace('mm',mm+1);
74
        format=format.replace('dddd',days[day]);
75
        format=format.replace('ddd',days[day].substr(0,3));
76
        format=format.replace('dd',dd);
77
        format=format.replace('yyyy',yyyy);
78
        if(format.indexOf('ampm')>0){
79
                if(hh>12) hh=hh-12;
80
                if(hh<12) ampm='AM';
81
                else ampm='PM';
82
                format=format.replace('ampm',ampm);
83
        }
84
        format=format.replace('hh',hh);
85
        format=format.replace('nn',nn);
86
        format=format.replace('ss',ss);
87
 
88
        return format;
89
};
90
f.isDate = function(dt,format){
91
        if (!dt) return false;
92
        var dd,mm,yyyy;
93
        var isLeapYear,st=true,delim='/';
94
        dt+='';format=(format)? format+'':'';
95
        if(dt.indexOf('/')>=0) delim='/';
96
        else if(dt.indexOf('-')>=0) delim='-';
97
        else if(dt.indexOf(' ')>=0) delim=' ';
98
        dt=dt.split(delim);
99
        if(format) format=format.replace(/\W/g,'/');
100
        else {
101
                if (dt[0]>=1000) format='yyyy/mm/dd';
102
                else if (dt[0]>=12 && dt[1]<=12) format='dd/mm/yyyy';
103
                else if (dt[0]<=12 && dt[1]>=12) format='mm/dd/yyyy';
104
        };
105
        if(format=='yyyy/mm/dd'){yyyy=dt[0];mm=dt[1];dd=dt[2];}
106
        else if(format=='mm/dd/yyyy'){mm=dt[0];dd=dt[1];yyyy=dt[2];}
107
        else if(format=='dd/mm/yyyy'){dd=dt[0];mm=dt[1];yyyy=dt[2];}
108
        if(isNaN(dd)||isNaN(mm)||isNaN(yyyy)) st=false;
109
        else if(dd<1 || dd>31) st=false;
110
        else if(yyyy>9999) st=false;
111
        else if (mm < 1 || mm > 12) st=false;
112
        else if((mm==4 || mm==6 || mm==9 || mm==11) && dd==31) st=false;
113
        else if(mm==2) { // check for leap year and february 29th
114
                isLeapYear = (yyyy % 4 == 0 && (yyyy % 100 != 0 || yyyy % 400 == 0));
115
                if (dd > 29 || (dd==29 && !isLeapYear)) st=false;
116
        }
117
        return st;
118
};