Files
aportil/includes/dtpick/datediff.js

108 lines
2.8 KiB
JavaScript

// JScript source code
var DayName=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var oneMinute=1000*60;
var intervalObject=new Object();
intervalObject["yyyy"]={units:1000*60*60*24*365,measure:"year"};
intervalObject["m"]={units:1000*60*60*24*30,measure:"month"};
intervalObject["d"]={units:1000*60*60*24,measure:"day"};
intervalObject["Q"]={units:intervalObject["m"].units*3,measure:"quarter"};
intervalObject["H"]={units:oneMinute*60,measure:"hour"};
intervalObject["N"]={units:oneMinute,measure:"minute"};
intervalObject["S"]={units:1000,measure:"second"};
function DateDiff(dateAddObj){
this.interval=dateAddObj.interval;
this.date1=dateAddObj.date1;
this.date2=dateAddObj.date2;
this.calculate=calculate;
this.calculate();
}
Date.prototype.DateDiff=DateDiff;
function calculate(){
var paramDate1=new String(this.date1);
splitDate1=paramDate1.split("-");
paramDateYear1=splitDate1[0];
paramDateMonth1=splitDate1[1]-1;
paramDateDay1=splitDate1[2];
if(paramDateMonth1>12){
alert("Invalid Month!");
return false;
}
if(paramDateDay1>31){
alert("Invalid Day!");
return false;
}
var paramDate2=new String(this.date2);
splitDate2=paramDate2.split("-");
paramDateYear2=splitDate2[0];
paramDateMonth2=splitDate2[1]-1;
paramDateDay2=splitDate2[2];
if(paramDateMonth2>12){
alert("Invalid Month!");
return false;
}
if(paramDateDay2>31){
alert("Invalid Day!");
return false;
}
var paramDate1Object=new Date(paramDateYear1,paramDateMonth1,paramDateDay1);
paramDate1Object.setHours(0);
paramDate1Object.setMinutes(0);
paramDate1Object.setSeconds(0);
//paramDate1Object.getTimezoneOffset() * oneMinute;
var paramDate1ObjectTime=paramDate1Object.getTime();
var paramDate2Object=new Date(paramDateYear2,paramDateMonth2,paramDateDay2);
paramDate2Object.setHours(0);
paramDate2Object.setMinutes(0);
paramDate2Object.setSeconds(0);
var paramDate2ObjectTime=paramDate2Object.getTime();
if(paramDate2Object>paramDate1Object){
DSTAdjust=(paramDate2Object.getTimezoneOffset() - paramDate1Object.getTimezoneOffset()) * oneMinute;
}
else{
DSTAdjust=(paramDate1Object.getTimezoneOffset() - paramDate2Object.getTimezoneOffset()) * oneMinute;
}
if(typeof intervalObject[this.interval]!="undefined"){
if(typeof intervalObject[this.interval].units=="undefined"){
alert("Interval is invalid!");
return false;
}
var diff=Math.abs(paramDate2ObjectTime-paramDate1ObjectTime) - DSTAdjust;
var timeDiff=Math.floor(diff/intervalObject[this.interval].units);
if(timeDiff>1){
var rname=intervalObject[this.interval].measure + "s";
}
else{
var rname=intervalObject[this.interval].measure;
}
this.difference=parseInt(timeDiff);
}
else{
this.difference="Wrong format of interval!";
}
}