diff options
Diffstat (limited to 'lib/dojo/date.js')
-rw-r--r-- | lib/dojo/date.js | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/lib/dojo/date.js b/lib/dojo/date.js new file mode 100644 index 000000000..dc51853f3 --- /dev/null +++ b/lib/dojo/date.js @@ -0,0 +1,213 @@ +/* + 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); +}; +} |