root / trunk / web / dojo / dojox / date / posix.js
History | View | Annotate | Download (4.51 KB)
| 1 | 9 | andrej.cim | /*
|
|---|---|---|---|
| 2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||
| 3 | Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||
| 4 | see: http://dojotoolkit.org/license for details
|
||
| 5 | */
|
||
| 6 | |||
| 7 | |||
| 8 | if(!dojo._hasResource["dojox.date.posix"]){ |
||
| 9 | dojo._hasResource["dojox.date.posix"]=true; |
||
| 10 | dojo.provide("dojox.date.posix");
|
||
| 11 | dojo.require("dojo.date");
|
||
| 12 | dojo.require("dojo.date.locale");
|
||
| 13 | dojo.require("dojo.string");
|
||
| 14 | dojox.date.posix.strftime=function(_1,_2,_3){ |
||
| 15 | var _4=null; |
||
| 16 | var _5=function(s,n){ |
||
| 17 | return dojo.string.pad(s,n||2,_4||"0"); |
||
| 18 | }; |
||
| 19 | var _6=dojo.date.locale._getGregorianBundle(_3);
|
||
| 20 | var $=function(_7){ |
||
| 21 | switch(_7){
|
||
| 22 | case "a": |
||
| 23 | return dojo.date.locale.getNames("days","abbr","format",_3)[_1.getDay()]; |
||
| 24 | case "A": |
||
| 25 | return dojo.date.locale.getNames("days","wide","format",_3)[_1.getDay()]; |
||
| 26 | case "b": |
||
| 27 | case "h": |
||
| 28 | return dojo.date.locale.getNames("months","abbr","format",_3)[_1.getMonth()]; |
||
| 29 | case "B": |
||
| 30 | return dojo.date.locale.getNames("months","wide","format",_3)[_1.getMonth()]; |
||
| 31 | case "c": |
||
| 32 | return dojo.date.locale.format(_1,{formatLength:"full",locale:_3}); |
||
| 33 | case "C": |
||
| 34 | return _5(Math.floor(_1.getFullYear()/100)); |
||
| 35 | case "d": |
||
| 36 | return _5(_1.getDate());
|
||
| 37 | case "D": |
||
| 38 | return $("m")+"/"+$("d")+"/"+$("y"); |
||
| 39 | case "e": |
||
| 40 | if(_4==null){ |
||
| 41 | _4=" ";
|
||
| 42 | } |
||
| 43 | return _5(_1.getDate());
|
||
| 44 | case "f": |
||
| 45 | if(_4==null){ |
||
| 46 | _4=" ";
|
||
| 47 | } |
||
| 48 | return _5(_1.getMonth()+1); |
||
| 49 | case "g": |
||
| 50 | break;
|
||
| 51 | case "G": |
||
| 52 | dojo.unimplemented("unimplemented modifier 'G'");
|
||
| 53 | break;
|
||
| 54 | case "F": |
||
| 55 | return $("Y")+"-"+$("m")+"-"+$("d"); |
||
| 56 | case "H": |
||
| 57 | return _5(_1.getHours());
|
||
| 58 | case "I": |
||
| 59 | return _5(_1.getHours()%12||12); |
||
| 60 | case "j": |
||
| 61 | return _5(dojo.date.locale._getDayOfYear(_1),3); |
||
| 62 | case "k": |
||
| 63 | if(_4==null){ |
||
| 64 | _4=" ";
|
||
| 65 | } |
||
| 66 | return _5(_1.getHours());
|
||
| 67 | case "l": |
||
| 68 | if(_4==null){ |
||
| 69 | _4=" ";
|
||
| 70 | } |
||
| 71 | return _5(_1.getHours()%12||12); |
||
| 72 | case "m": |
||
| 73 | return _5(_1.getMonth()+1); |
||
| 74 | case "M": |
||
| 75 | return _5(_1.getMinutes());
|
||
| 76 | case "n": |
||
| 77 | return "\n"; |
||
| 78 | case "p": |
||
| 79 | return _6["dayPeriods-format-wide-"+(_1.getHours()<12?"am":"pm")]; |
||
| 80 | case "r": |
||
| 81 | return $("I")+":"+$("M")+":"+$("S")+" "+$("p"); |
||
| 82 | case "R": |
||
| 83 | return $("H")+":"+$("M"); |
||
| 84 | case "S": |
||
| 85 | return _5(_1.getSeconds());
|
||
| 86 | case "t": |
||
| 87 | return "\t"; |
||
| 88 | case "T": |
||
| 89 | return $("H")+":"+$("M")+":"+$("S"); |
||
| 90 | case "u": |
||
| 91 | return String(_1.getDay()||7); |
||
| 92 | case "U": |
||
| 93 | return _5(dojo.date.locale._getWeekOfYear(_1));
|
||
| 94 | case "V": |
||
| 95 | return _5(dojox.date.posix.getIsoWeekOfYear(_1));
|
||
| 96 | case "W": |
||
| 97 | return _5(dojo.date.locale._getWeekOfYear(_1,1)); |
||
| 98 | case "w": |
||
| 99 | return String(_1.getDay());
|
||
| 100 | case "x": |
||
| 101 | return dojo.date.locale.format(_1,{selector:"date",formatLength:"full",locale:_3}); |
||
| 102 | case "X": |
||
| 103 | return dojo.date.locale.format(_1,{selector:"time",formatLength:"full",locale:_3}); |
||
| 104 | case "y": |
||
| 105 | return _5(_1.getFullYear()%100); |
||
| 106 | case "Y": |
||
| 107 | return String(_1.getFullYear());
|
||
| 108 | case "z": |
||
| 109 | var _8=_1.getTimezoneOffset();
|
||
| 110 | return (_8>0?"-":"+")+_5(Math.floor(Math.abs(_8)/60))+":"+_5(Math.abs(_8)%60); |
||
| 111 | case "Z": |
||
| 112 | return dojo.date.getTimezoneName(_1);
|
||
| 113 | case "%": |
||
| 114 | return "%"; |
||
| 115 | } |
||
| 116 | }; |
||
| 117 | var _9=""; |
||
| 118 | var i=0; |
||
| 119 | var _a=0; |
||
| 120 | var _b=null; |
||
| 121 | while((_a=_2.indexOf("%",i))!=-1){ |
||
| 122 | _9+=_2.substring(i,_a++); |
||
| 123 | switch(_2.charAt(_a++)){
|
||
| 124 | case "_": |
||
| 125 | _4=" ";
|
||
| 126 | break;
|
||
| 127 | case "-": |
||
| 128 | _4="";
|
||
| 129 | break;
|
||
| 130 | case "0": |
||
| 131 | _4="0";
|
||
| 132 | break;
|
||
| 133 | case "^": |
||
| 134 | _b="upper";
|
||
| 135 | break;
|
||
| 136 | case "*": |
||
| 137 | _b="lower";
|
||
| 138 | break;
|
||
| 139 | case "#": |
||
| 140 | _b="swap";
|
||
| 141 | break;
|
||
| 142 | default:
|
||
| 143 | _4=null;
|
||
| 144 | _a--; |
||
| 145 | break;
|
||
| 146 | } |
||
| 147 | var _c=$(_2.charAt(_a++)); |
||
| 148 | switch(_b){
|
||
| 149 | case "upper": |
||
| 150 | _c=_c.toUpperCase(); |
||
| 151 | break;
|
||
| 152 | case "lower": |
||
| 153 | _c=_c.toLowerCase(); |
||
| 154 | break;
|
||
| 155 | case "swap": |
||
| 156 | var _d=_c.toLowerCase();
|
||
| 157 | var _e=""; |
||
| 158 | var ch=""; |
||
| 159 | for(var j=0;j<_c.length;j++){ |
||
| 160 | ch=_c.charAt(j); |
||
| 161 | _e+=(ch==_d.charAt(j))?ch.toUpperCase():ch.toLowerCase(); |
||
| 162 | } |
||
| 163 | _c=_e; |
||
| 164 | break;
|
||
| 165 | default:
|
||
| 166 | break;
|
||
| 167 | } |
||
| 168 | _b=null;
|
||
| 169 | _9+=_c; |
||
| 170 | i=_a; |
||
| 171 | } |
||
| 172 | _9+=_2.substring(i); |
||
| 173 | return _9;
|
||
| 174 | }; |
||
| 175 | dojox.date.posix.getStartOfWeek=function(_f,_10){ |
||
| 176 | if(isNaN(_10)){
|
||
| 177 | _10=dojo.cldr.supplemental.getFirstDayOfWeek?dojo.cldr.supplemental.getFirstDayOfWeek():0;
|
||
| 178 | } |
||
| 179 | var _11=_10;
|
||
| 180 | if(_f.getDay()>=_10){
|
||
| 181 | _11-=_f.getDay(); |
||
| 182 | }else{
|
||
| 183 | _11-=(7-_f.getDay());
|
||
| 184 | } |
||
| 185 | var _12=new Date(_f); |
||
| 186 | _12.setHours(0,0,0,0); |
||
| 187 | return dojo.date.add(_12,"day",_11); |
||
| 188 | }; |
||
| 189 | dojox.date.posix.setIsoWeekOfYear=function(_13,_14){ |
||
| 190 | if(!_14){
|
||
| 191 | return _13;
|
||
| 192 | } |
||
| 193 | var _15=dojox.date.posix.getIsoWeekOfYear(_13);
|
||
| 194 | var _16=_14-_15;
|
||
| 195 | if(_14<0){ |
||
| 196 | var _17=dojox.date.posix.getIsoWeeksInYear(_13);
|
||
| 197 | _16=(_17+_14+1)-_15;
|
||
| 198 | } |
||
| 199 | return dojo.date.add(_13,"week",_16); |
||
| 200 | }; |
||
| 201 | dojox.date.posix.getIsoWeekOfYear=function(_18){ |
||
| 202 | var _19=dojox.date.posix.getStartOfWeek(_18,1); |
||
| 203 | var _1a=new Date(_18.getFullYear(),0,4); |
||
| 204 | _1a=dojox.date.posix.getStartOfWeek(_1a,1);
|
||
| 205 | var _1b=_19.getTime()-_1a.getTime();
|
||
| 206 | if(_1b<0){ |
||
| 207 | return dojox.date.posix.getIsoWeeksInYear(_19);
|
||
| 208 | } |
||
| 209 | return Math.ceil(_1b/604800000)+1; |
||
| 210 | }; |
||
| 211 | dojox.date.posix.getIsoWeeksInYear=function(_1c){ |
||
| 212 | function p(y){ |
||
| 213 | return y+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400); |
||
| 214 | }; |
||
| 215 | var y=_1c.getFullYear();
|
||
| 216 | return (p(y)%7==4||p(y-1)%7==3)?53:52; |
||
| 217 | }; |
||
| 218 | } |