213 lines
3.3 KiB
JavaScript
213 lines
3.3 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
|
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
|
see: http://dojotoolkit.org/license for details
|
|
*/
|
|
|
|
|
|
if(!dojo._hasResource["dojo.date"]){
|
|
dojo._hasResource["dojo.date"]=true;
|
|
dojo.provide("dojo.date");
|
|
dojo.date.getDaysInMonth=function(_1){
|
|
var _2=_1.getMonth();
|
|
var _3=[31,28,31,30,31,30,31,31,30,31,30,31];
|
|
if(_2==1&&dojo.date.isLeapYear(_1)){
|
|
return 29;
|
|
}
|
|
return _3[_2];
|
|
};
|
|
dojo.date.isLeapYear=function(_4){
|
|
var _5=_4.getFullYear();
|
|
return !(_5%400)||(!(_5%4)&&!!(_5%100));
|
|
};
|
|
dojo.date.getTimezoneName=function(_6){
|
|
var _7=_6.toString();
|
|
var tz="";
|
|
var _8;
|
|
var _9=_7.indexOf("(");
|
|
if(_9>-1){
|
|
tz=_7.substring(++_9,_7.indexOf(")"));
|
|
}else{
|
|
var _a=/([A-Z\/]+) \d{4}$/;
|
|
if((_8=_7.match(_a))){
|
|
tz=_8[1];
|
|
}else{
|
|
_7=_6.toLocaleString();
|
|
_a=/ ([A-Z\/]+)$/;
|
|
if((_8=_7.match(_a))){
|
|
tz=_8[1];
|
|
}
|
|
}
|
|
}
|
|
return (tz=="AM"||tz=="PM")?"":tz;
|
|
};
|
|
dojo.date.compare=function(_b,_c,_d){
|
|
_b=new Date(+_b);
|
|
_c=new Date(+(_c||new Date()));
|
|
if(_d=="date"){
|
|
_b.setHours(0,0,0,0);
|
|
_c.setHours(0,0,0,0);
|
|
}else{
|
|
if(_d=="time"){
|
|
_b.setFullYear(0,0,0);
|
|
_c.setFullYear(0,0,0);
|
|
}
|
|
}
|
|
if(_b>_c){
|
|
return 1;
|
|
}
|
|
if(_b<_c){
|
|
return -1;
|
|
}
|
|
return 0;
|
|
};
|
|
dojo.date.add=function(_e,_f,_10){
|
|
var sum=new Date(+_e);
|
|
var _11=false;
|
|
var _12="Date";
|
|
switch(_f){
|
|
case "day":
|
|
break;
|
|
case "weekday":
|
|
var _13,_14;
|
|
var mod=_10%5;
|
|
if(!mod){
|
|
_13=(_10>0)?5:-5;
|
|
_14=(_10>0)?((_10-5)/5):((_10+5)/5);
|
|
}else{
|
|
_13=mod;
|
|
_14=parseInt(_10/5);
|
|
}
|
|
var _15=_e.getDay();
|
|
var adj=0;
|
|
if(_15==6&&_10>0){
|
|
adj=1;
|
|
}else{
|
|
if(_15==0&&_10<0){
|
|
adj=-1;
|
|
}
|
|
}
|
|
var _16=_15+_13;
|
|
if(_16==0||_16==6){
|
|
adj=(_10>0)?2:-2;
|
|
}
|
|
_10=(7*_14)+_13+adj;
|
|
break;
|
|
case "year":
|
|
_12="FullYear";
|
|
_11=true;
|
|
break;
|
|
case "week":
|
|
_10*=7;
|
|
break;
|
|
case "quarter":
|
|
_10*=3;
|
|
case "month":
|
|
_11=true;
|
|
_12="Month";
|
|
break;
|
|
default:
|
|
_12="UTC"+_f.charAt(0).toUpperCase()+_f.substring(1)+"s";
|
|
}
|
|
if(_12){
|
|
sum["set"+_12](sum["get"+_12]()+_10);
|
|
}
|
|
if(_11&&(sum.getDate()<_e.getDate())){
|
|
sum.setDate(0);
|
|
}
|
|
return sum;
|
|
};
|
|
dojo.date.difference=function(_17,_18,_19){
|
|
_18=_18||new Date();
|
|
_19=_19||"day";
|
|
var _1a=_18.getFullYear()-_17.getFullYear();
|
|
var _1b=1;
|
|
switch(_19){
|
|
case "quarter":
|
|
var m1=_17.getMonth();
|
|
var m2=_18.getMonth();
|
|
var q1=Math.floor(m1/3)+1;
|
|
var q2=Math.floor(m2/3)+1;
|
|
q2+=(_1a*4);
|
|
_1b=q2-q1;
|
|
break;
|
|
case "weekday":
|
|
var _1c=Math.round(dojo.date.difference(_17,_18,"day"));
|
|
var _1d=parseInt(dojo.date.difference(_17,_18,"week"));
|
|
var mod=_1c%7;
|
|
if(mod==0){
|
|
_1c=_1d*5;
|
|
}else{
|
|
var adj=0;
|
|
var _1e=_17.getDay();
|
|
var _1f=_18.getDay();
|
|
_1d=parseInt(_1c/7);
|
|
mod=_1c%7;
|
|
var _20=new Date(_17);
|
|
_20.setDate(_20.getDate()+(_1d*7));
|
|
var _21=_20.getDay();
|
|
if(_1c>0){
|
|
switch(true){
|
|
case _1e==6:
|
|
adj=-1;
|
|
break;
|
|
case _1e==0:
|
|
adj=0;
|
|
break;
|
|
case _1f==6:
|
|
adj=-1;
|
|
break;
|
|
case _1f==0:
|
|
adj=-2;
|
|
break;
|
|
case (_21+mod)>5:
|
|
adj=-2;
|
|
}
|
|
}else{
|
|
if(_1c<0){
|
|
switch(true){
|
|
case _1e==6:
|
|
adj=0;
|
|
break;
|
|
case _1e==0:
|
|
adj=1;
|
|
break;
|
|
case _1f==6:
|
|
adj=2;
|
|
break;
|
|
case _1f==0:
|
|
adj=1;
|
|
break;
|
|
case (_21+mod)<0:
|
|
adj=2;
|
|
}
|
|
}
|
|
}
|
|
_1c+=adj;
|
|
_1c-=(_1d*2);
|
|
}
|
|
_1b=_1c;
|
|
break;
|
|
case "year":
|
|
_1b=_1a;
|
|
break;
|
|
case "month":
|
|
_1b=(_18.getMonth()-_17.getMonth())+(_1a*12);
|
|
break;
|
|
case "week":
|
|
_1b=parseInt(dojo.date.difference(_17,_18,"day")/7);
|
|
break;
|
|
case "day":
|
|
_1b/=24;
|
|
case "hour":
|
|
_1b/=60;
|
|
case "minute":
|
|
_1b/=60;
|
|
case "second":
|
|
_1b/=1000;
|
|
case "millisecond":
|
|
_1b*=_18.getTime()-_17.getTime();
|
|
}
|
|
return Math.round(_1b);
|
|
};
|
|
}
|