Subversion Repositories wimsdev

Rev

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

  1. /*
  2.         DynAPI Distribution
  3.         dynapi.functions.Date extension
  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){
  12.         if(!interval||!n||!dt) return;
  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);
  17.                 if(i=='year') dt.setFullYear(dt.getFullYear()+n);
  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){
  31.         if(!interval||!dt1||!dt2) return;
  32.         var v,s=1,m=1,h=1,dd=1,i=interval;
  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);
  40.                         if(years!=0) v+=(years*12);
  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. };
  119.