blob: a5a3e6137c24a0cb61053fdc6fb79e640f3ad519 [file] [log] [blame]
dojo.provide("dojo.date.serialize");
dojo.require("dojo.string.common");
dojo.date.setIso8601=function(_1,_2){
var _3=(_2.indexOf("T")==-1)?_2.split(" "):_2.split("T");
_1=dojo.date.setIso8601Date(_1,_3[0]);
if(_3.length==2){
_1=dojo.date.setIso8601Time(_1,_3[1]);
}
return _1;
};
dojo.date.fromIso8601=function(_4){
return dojo.date.setIso8601(new Date(0,0),_4);
};
dojo.date.setIso8601Date=function(_5,_6){
var _7="^([0-9]{4})((-?([0-9]{2})(-?([0-9]{2}))?)|"+"(-?([0-9]{3}))|(-?W([0-9]{2})(-?([1-7]))?))?$";
var d=_6.match(new RegExp(_7));
if(!d){
dojo.debug("invalid date string: "+_6);
return null;
}
var _9=d[1];
var _a=d[4];
var _b=d[6];
var _c=d[8];
var _d=d[10];
var _e=d[12]?d[12]:1;
_5.setFullYear(_9);
if(_c){
_5.setMonth(0);
_5.setDate(Number(_c));
}else{
if(_d){
_5.setMonth(0);
_5.setDate(1);
var gd=_5.getDay();
var day=gd?gd:7;
var _11=Number(_e)+(7*Number(_d));
if(day<=4){
_5.setDate(_11+1-day);
}else{
_5.setDate(_11+8-day);
}
}else{
if(_a){
_5.setDate(1);
_5.setMonth(_a-1);
}
if(_b){
_5.setDate(_b);
}
}
}
return _5;
};
dojo.date.fromIso8601Date=function(_12){
return dojo.date.setIso8601Date(new Date(0,0),_12);
};
dojo.date.setIso8601Time=function(_13,_14){
var _15="Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$";
var d=_14.match(new RegExp(_15));
var _17=0;
if(d){
if(d[0]!="Z"){
_17=(Number(d[3])*60)+Number(d[5]);
_17*=((d[2]=="-")?1:-1);
}
_17-=_13.getTimezoneOffset();
_14=_14.substr(0,_14.length-d[0].length);
}
var _18="^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(.([0-9]+))?)?)?$";
d=_14.match(new RegExp(_18));
if(!d){
dojo.debug("invalid time string: "+_14);
return null;
}
var _19=d[1];
var _1a=Number((d[3])?d[3]:0);
var _1b=(d[5])?d[5]:0;
var ms=d[7]?(Number("0."+d[7])*1000):0;
_13.setHours(_19);
_13.setMinutes(_1a);
_13.setSeconds(_1b);
_13.setMilliseconds(ms);
if(_17!==0){
_13.setTime(_13.getTime()+_17*60000);
}
return _13;
};
dojo.date.fromIso8601Time=function(_1d){
return dojo.date.setIso8601Time(new Date(0,0),_1d);
};
dojo.date.toRfc3339=function(_1e,_1f){
if(!_1e){
_1e=new Date();
}
var _=dojo.string.pad;
var _21=[];
if(_1f!="timeOnly"){
var _22=[_(_1e.getFullYear(),4),_(_1e.getMonth()+1,2),_(_1e.getDate(),2)].join("-");
_21.push(_22);
}
if(_1f!="dateOnly"){
var _23=[_(_1e.getHours(),2),_(_1e.getMinutes(),2),_(_1e.getSeconds(),2)].join(":");
var _24=_1e.getTimezoneOffset();
_23+=(_24>0?"-":"+")+_(Math.floor(Math.abs(_24)/60),2)+":"+_(Math.abs(_24)%60,2);
_21.push(_23);
}
return _21.join("T");
};
dojo.date.fromRfc3339=function(_25){
if(_25.indexOf("Tany")!=-1){
_25=_25.replace("Tany","");
}
var _26=new Date();
return dojo.date.setIso8601(_26,_25);
};