453 lines
8.5 KiB
JavaScript
453 lines
8.5 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2011, 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
|
|
*/
|
|
|
|
//>>built
|
|
define("dojo/date/locale",["../_base/kernel","../_base/lang","../_base/array","../date","../cldr/supplemental","../regexp","../string","../i18n!../cldr/nls/gregorian"],function(_1,_2,_3,_4,_5,_6,_7,_8){
|
|
_2.getObject("date.locale",true,_1);
|
|
function _9(_a,_b,_c,_d){
|
|
return _d.replace(/([a-z])\1*/ig,function(_e){
|
|
var s,_f,c=_e.charAt(0),l=_e.length,_10=["abbr","wide","narrow"];
|
|
switch(c){
|
|
case "G":
|
|
s=_b[(l<4)?"eraAbbr":"eraNames"][_a.getFullYear()<0?0:1];
|
|
break;
|
|
case "y":
|
|
s=_a.getFullYear();
|
|
switch(l){
|
|
case 1:
|
|
break;
|
|
case 2:
|
|
if(!_c.fullYear){
|
|
s=String(s);
|
|
s=s.substr(s.length-2);
|
|
break;
|
|
}
|
|
default:
|
|
_f=true;
|
|
}
|
|
break;
|
|
case "Q":
|
|
case "q":
|
|
s=Math.ceil((_a.getMonth()+1)/3);
|
|
_f=true;
|
|
break;
|
|
case "M":
|
|
var m=_a.getMonth();
|
|
if(l<3){
|
|
s=m+1;
|
|
_f=true;
|
|
}else{
|
|
var _11=["months","format",_10[l-3]].join("-");
|
|
s=_b[_11][m];
|
|
}
|
|
break;
|
|
case "w":
|
|
var _12=0;
|
|
s=_1.date.locale._getWeekOfYear(_a,_12);
|
|
_f=true;
|
|
break;
|
|
case "d":
|
|
s=_a.getDate();
|
|
_f=true;
|
|
break;
|
|
case "D":
|
|
s=_1.date.locale._getDayOfYear(_a);
|
|
_f=true;
|
|
break;
|
|
case "E":
|
|
var d=_a.getDay();
|
|
if(l<3){
|
|
s=d+1;
|
|
_f=true;
|
|
}else{
|
|
var _13=["days","format",_10[l-3]].join("-");
|
|
s=_b[_13][d];
|
|
}
|
|
break;
|
|
case "a":
|
|
var _14=(_a.getHours()<12)?"am":"pm";
|
|
s=_c[_14]||_b["dayPeriods-format-wide-"+_14];
|
|
break;
|
|
case "h":
|
|
case "H":
|
|
case "K":
|
|
case "k":
|
|
var h=_a.getHours();
|
|
switch(c){
|
|
case "h":
|
|
s=(h%12)||12;
|
|
break;
|
|
case "H":
|
|
s=h;
|
|
break;
|
|
case "K":
|
|
s=(h%12);
|
|
break;
|
|
case "k":
|
|
s=h||24;
|
|
break;
|
|
}
|
|
_f=true;
|
|
break;
|
|
case "m":
|
|
s=_a.getMinutes();
|
|
_f=true;
|
|
break;
|
|
case "s":
|
|
s=_a.getSeconds();
|
|
_f=true;
|
|
break;
|
|
case "S":
|
|
s=Math.round(_a.getMilliseconds()*Math.pow(10,l-3));
|
|
_f=true;
|
|
break;
|
|
case "v":
|
|
case "z":
|
|
s=_1.date.locale._getZone(_a,true,_c);
|
|
if(s){
|
|
break;
|
|
}
|
|
l=4;
|
|
case "Z":
|
|
var _15=_1.date.locale._getZone(_a,false,_c);
|
|
var tz=[(_15<=0?"+":"-"),_7.pad(Math.floor(Math.abs(_15)/60),2),_7.pad(Math.abs(_15)%60,2)];
|
|
if(l==4){
|
|
tz.splice(0,0,"GMT");
|
|
tz.splice(3,0,":");
|
|
}
|
|
s=tz.join("");
|
|
break;
|
|
default:
|
|
throw new Error("dojo.date.locale.format: invalid pattern char: "+_d);
|
|
}
|
|
if(_f){
|
|
s=_7.pad(s,l);
|
|
}
|
|
return s;
|
|
});
|
|
};
|
|
_1.date.locale._getZone=function(_16,_17,_18){
|
|
if(_17){
|
|
return _4.getTimezoneName(_16);
|
|
}else{
|
|
return _16.getTimezoneOffset();
|
|
}
|
|
};
|
|
_1.date.locale.format=function(_19,_1a){
|
|
_1a=_1a||{};
|
|
var _1b=_1.i18n.normalizeLocale(_1a.locale),_1c=_1a.formatLength||"short",_1d=_1.date.locale._getGregorianBundle(_1b),str=[],_1e=_2.hitch(this,_9,_19,_1d,_1a);
|
|
if(_1a.selector=="year"){
|
|
return _1f(_1d["dateFormatItem-yyyy"]||"yyyy",_1e);
|
|
}
|
|
var _20;
|
|
if(_1a.selector!="date"){
|
|
_20=_1a.timePattern||_1d["timeFormat-"+_1c];
|
|
if(_20){
|
|
str.push(_1f(_20,_1e));
|
|
}
|
|
}
|
|
if(_1a.selector!="time"){
|
|
_20=_1a.datePattern||_1d["dateFormat-"+_1c];
|
|
if(_20){
|
|
str.push(_1f(_20,_1e));
|
|
}
|
|
}
|
|
return str.length==1?str[0]:_1d["dateTimeFormat-"+_1c].replace(/\{(\d+)\}/g,function(_21,key){
|
|
return str[key];
|
|
});
|
|
};
|
|
_1.date.locale.regexp=function(_22){
|
|
return _1.date.locale._parseInfo(_22).regexp;
|
|
};
|
|
_1.date.locale._parseInfo=function(_23){
|
|
_23=_23||{};
|
|
var _24=_1.i18n.normalizeLocale(_23.locale),_25=_1.date.locale._getGregorianBundle(_24),_26=_23.formatLength||"short",_27=_23.datePattern||_25["dateFormat-"+_26],_28=_23.timePattern||_25["timeFormat-"+_26],_29;
|
|
if(_23.selector=="date"){
|
|
_29=_27;
|
|
}else{
|
|
if(_23.selector=="time"){
|
|
_29=_28;
|
|
}else{
|
|
_29=_25["dateTimeFormat-"+_26].replace(/\{(\d+)\}/g,function(_2a,key){
|
|
return [_28,_27][key];
|
|
});
|
|
}
|
|
}
|
|
var _2b=[],re=_1f(_29,_2.hitch(this,_2c,_2b,_25,_23));
|
|
return {regexp:re,tokens:_2b,bundle:_25};
|
|
};
|
|
_1.date.locale.parse=function(_2d,_2e){
|
|
var _2f=/[\u200E\u200F\u202A\u202E]/g,_30=_1.date.locale._parseInfo(_2e),_31=_30.tokens,_32=_30.bundle,re=new RegExp("^"+_30.regexp.replace(_2f,"")+"$",_30.strict?"":"i"),_33=re.exec(_2d&&_2d.replace(_2f,""));
|
|
if(!_33){
|
|
return null;
|
|
}
|
|
var _34=["abbr","wide","narrow"],_35=[1970,0,1,0,0,0,0],_36="",_37=_1.every(_33,function(v,i){
|
|
if(!i){
|
|
return true;
|
|
}
|
|
var _38=_31[i-1];
|
|
var l=_38.length;
|
|
switch(_38.charAt(0)){
|
|
case "y":
|
|
if(l!=2&&_2e.strict){
|
|
_35[0]=v;
|
|
}else{
|
|
if(v<100){
|
|
v=Number(v);
|
|
var _39=""+new Date().getFullYear(),_3a=_39.substring(0,2)*100,_3b=Math.min(Number(_39.substring(2,4))+20,99);
|
|
_35[0]=(v<_3b)?_3a+v:_3a-100+v;
|
|
}else{
|
|
if(_2e.strict){
|
|
return false;
|
|
}
|
|
_35[0]=v;
|
|
}
|
|
}
|
|
break;
|
|
case "M":
|
|
if(l>2){
|
|
var _3c=_32["months-format-"+_34[l-3]].concat();
|
|
if(!_2e.strict){
|
|
v=v.replace(".","").toLowerCase();
|
|
_3c=_1.map(_3c,function(s){
|
|
return s.replace(".","").toLowerCase();
|
|
});
|
|
}
|
|
v=_1.indexOf(_3c,v);
|
|
if(v==-1){
|
|
return false;
|
|
}
|
|
}else{
|
|
v--;
|
|
}
|
|
_35[1]=v;
|
|
break;
|
|
case "E":
|
|
case "e":
|
|
var _3d=_32["days-format-"+_34[l-3]].concat();
|
|
if(!_2e.strict){
|
|
v=v.toLowerCase();
|
|
_3d=_1.map(_3d,function(d){
|
|
return d.toLowerCase();
|
|
});
|
|
}
|
|
v=_1.indexOf(_3d,v);
|
|
if(v==-1){
|
|
return false;
|
|
}
|
|
break;
|
|
case "D":
|
|
_35[1]=0;
|
|
case "d":
|
|
_35[2]=v;
|
|
break;
|
|
case "a":
|
|
var am=_2e.am||_32["dayPeriods-format-wide-am"],pm=_2e.pm||_32["dayPeriods-format-wide-pm"];
|
|
if(!_2e.strict){
|
|
var _3e=/\./g;
|
|
v=v.replace(_3e,"").toLowerCase();
|
|
am=am.replace(_3e,"").toLowerCase();
|
|
pm=pm.replace(_3e,"").toLowerCase();
|
|
}
|
|
if(_2e.strict&&v!=am&&v!=pm){
|
|
return false;
|
|
}
|
|
_36=(v==pm)?"p":(v==am)?"a":"";
|
|
break;
|
|
case "K":
|
|
if(v==24){
|
|
v=0;
|
|
}
|
|
case "h":
|
|
case "H":
|
|
case "k":
|
|
if(v>23){
|
|
return false;
|
|
}
|
|
_35[3]=v;
|
|
break;
|
|
case "m":
|
|
_35[4]=v;
|
|
break;
|
|
case "s":
|
|
_35[5]=v;
|
|
break;
|
|
case "S":
|
|
_35[6]=v;
|
|
}
|
|
return true;
|
|
});
|
|
var _3f=+_35[3];
|
|
if(_36==="p"&&_3f<12){
|
|
_35[3]=_3f+12;
|
|
}else{
|
|
if(_36==="a"&&_3f==12){
|
|
_35[3]=0;
|
|
}
|
|
}
|
|
var _40=new Date(_35[0],_35[1],_35[2],_35[3],_35[4],_35[5],_35[6]);
|
|
if(_2e.strict){
|
|
_40.setFullYear(_35[0]);
|
|
}
|
|
var _41=_31.join(""),_42=_41.indexOf("d")!=-1,_43=_41.indexOf("M")!=-1;
|
|
if(!_37||(_43&&_40.getMonth()>_35[1])||(_42&&_40.getDate()>_35[2])){
|
|
return null;
|
|
}
|
|
if((_43&&_40.getMonth()<_35[1])||(_42&&_40.getDate()<_35[2])){
|
|
_40=_4.add(_40,"hour",1);
|
|
}
|
|
return _40;
|
|
};
|
|
function _1f(_44,_45,_46,_47){
|
|
var _48=function(x){
|
|
return x;
|
|
};
|
|
_45=_45||_48;
|
|
_46=_46||_48;
|
|
_47=_47||_48;
|
|
var _49=_44.match(/(''|[^'])+/g),_4a=_44.charAt(0)=="'";
|
|
_1.forEach(_49,function(_4b,i){
|
|
if(!_4b){
|
|
_49[i]="";
|
|
}else{
|
|
_49[i]=(_4a?_46:_45)(_4b.replace(/''/g,"'"));
|
|
_4a=!_4a;
|
|
}
|
|
});
|
|
return _47(_49.join(""));
|
|
};
|
|
function _2c(_4c,_4d,_4e,_4f){
|
|
_4f=_6.escapeString(_4f);
|
|
if(!_4e.strict){
|
|
_4f=_4f.replace(" a"," ?a");
|
|
}
|
|
return _4f.replace(/([a-z])\1*/ig,function(_50){
|
|
var s,c=_50.charAt(0),l=_50.length,p2="",p3="";
|
|
if(_4e.strict){
|
|
if(l>1){
|
|
p2="0"+"{"+(l-1)+"}";
|
|
}
|
|
if(l>2){
|
|
p3="0"+"{"+(l-2)+"}";
|
|
}
|
|
}else{
|
|
p2="0?";
|
|
p3="0{0,2}";
|
|
}
|
|
switch(c){
|
|
case "y":
|
|
s="\\d{2,4}";
|
|
break;
|
|
case "M":
|
|
s=(l>2)?"\\S+?":"1[0-2]|"+p2+"[1-9]";
|
|
break;
|
|
case "D":
|
|
s="[12][0-9][0-9]|3[0-5][0-9]|36[0-6]|"+p2+"[1-9][0-9]|"+p3+"[1-9]";
|
|
break;
|
|
case "d":
|
|
s="3[01]|[12]\\d|"+p2+"[1-9]";
|
|
break;
|
|
case "w":
|
|
s="[1-4][0-9]|5[0-3]|"+p2+"[1-9]";
|
|
break;
|
|
case "E":
|
|
s="\\S+";
|
|
break;
|
|
case "h":
|
|
s="1[0-2]|"+p2+"[1-9]";
|
|
break;
|
|
case "k":
|
|
s="1[01]|"+p2+"\\d";
|
|
break;
|
|
case "H":
|
|
s="1\\d|2[0-3]|"+p2+"\\d";
|
|
break;
|
|
case "K":
|
|
s="1\\d|2[0-4]|"+p2+"[1-9]";
|
|
break;
|
|
case "m":
|
|
case "s":
|
|
s="[0-5]\\d";
|
|
break;
|
|
case "S":
|
|
s="\\d{"+l+"}";
|
|
break;
|
|
case "a":
|
|
var am=_4e.am||_4d["dayPeriods-format-wide-am"],pm=_4e.pm||_4d["dayPeriods-format-wide-pm"];
|
|
s=am+"|"+pm;
|
|
if(!_4e.strict){
|
|
if(am!=am.toLowerCase()){
|
|
s+="|"+am.toLowerCase();
|
|
}
|
|
if(pm!=pm.toLowerCase()){
|
|
s+="|"+pm.toLowerCase();
|
|
}
|
|
if(s.indexOf(".")!=-1){
|
|
s+="|"+s.replace(/\./g,"");
|
|
}
|
|
}
|
|
s=s.replace(/\./g,"\\.");
|
|
break;
|
|
default:
|
|
s=".*";
|
|
}
|
|
if(_4c){
|
|
_4c.push(_50);
|
|
}
|
|
return "("+s+")";
|
|
}).replace(/[\xa0 ]/g,"[\\s\\xa0]");
|
|
};
|
|
var _51=[];
|
|
_1.date.locale.addCustomFormats=function(_52,_53){
|
|
_51.push({pkg:_52,name:_53});
|
|
};
|
|
_1.date.locale._getGregorianBundle=function(_54){
|
|
var _55={};
|
|
_1.forEach(_51,function(_56){
|
|
var _57=_1.i18n.getLocalization(_56.pkg,_56.name,_54);
|
|
_55=_2.mixin(_55,_57);
|
|
},this);
|
|
return _55;
|
|
};
|
|
_1.date.locale.addCustomFormats("dojo.cldr","gregorian");
|
|
_1.date.locale.getNames=function(_58,_59,_5a,_5b){
|
|
var _5c,_5d=_1.date.locale._getGregorianBundle(_5b),_5e=[_58,_5a,_59];
|
|
if(_5a=="standAlone"){
|
|
var key=_5e.join("-");
|
|
_5c=_5d[key];
|
|
if(_5c[0]==1){
|
|
_5c=undefined;
|
|
}
|
|
}
|
|
_5e[1]="format";
|
|
return (_5c||_5d[_5e.join("-")]).concat();
|
|
};
|
|
_1.date.locale.isWeekend=function(_5f,_60){
|
|
var _61=_5.getWeekend(_60),day=(_5f||new Date()).getDay();
|
|
if(_61.end<_61.start){
|
|
_61.end+=7;
|
|
if(day<_61.start){
|
|
day+=7;
|
|
}
|
|
}
|
|
return day>=_61.start&&day<=_61.end;
|
|
};
|
|
_1.date.locale._getDayOfYear=function(_62){
|
|
return _4.difference(new Date(_62.getFullYear(),0,1,_62.getHours()),_62)+1;
|
|
};
|
|
_1.date.locale._getWeekOfYear=function(_63,_64){
|
|
if(arguments.length==1){
|
|
_64=0;
|
|
}
|
|
var _65=new Date(_63.getFullYear(),0,1).getDay(),adj=(_65-_64+7)%7,_66=Math.floor((_1.date.locale._getDayOfYear(_63)+adj-1)/7);
|
|
if(_65==_64){
|
|
_66++;
|
|
}
|
|
return _66;
|
|
};
|
|
return _1.date.locale;
|
|
});
|