19 lines
7.1 KiB
JavaScript
19 lines
7.1 KiB
JavaScript
/*
|
|
XDate v0.8
|
|
Docs & Licensing: http://arshaw.com/xdate/
|
|
*/
|
|
var XDate=function(f,m,E,t){function h(){var a=this instanceof h?this:new h,c=arguments,b=c.length,d;"boolean"==typeof c[b-1]&&(d=c[--b],c=u(c,0,b));if(b)if(1==b)if(b=c[0],b instanceof f||"number"==typeof b)a[0]=new f(+b);else if(b instanceof h){var c=a,g=new f(+b[0]);q(b)&&(g.toString=z);c[0]=g}else{if("string"==typeof b){a[0]=new f(0);a:{for(var c=b,b=d||!1,g=h.parsers,A=0,e;A<g.length;A++)if(e=g[A](c,b,a)){a=e;break a}a[0]=new f(c)}}}else a[0]=new f(r.apply(f,c)),d||(a[0]=v(a[0]));else a[0]=new f;
|
|
"boolean"==typeof d&&F(a,d);return a}function q(a){return a[0].toString===z}function F(a,c,b){c?q(a)||(b&&(c=a[0],c=new f(r(c.getFullYear(),c.getMonth(),c.getDate(),c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds())),a[0]=c),a[0].toString=z):q(a)&&(a[0]=b?v(a[0]):new f(+a[0]));return a}function G(a,c,b,d,g){var e=n(p,a[0],g);a=n(H,a[0],g);g=!1;2==d.length&&"boolean"==typeof d[1]&&(g=d[1],d=[b]);b=1==c?(b%12+12)%12:e(1);a(c,d);g&&e(1)!=b&&(a(1,[e(1)-1]),a(2,[I(e(0),e(1))]))}function J(a,
|
|
c,b,d){b=Number(b);var g=m.floor(b);a["set"+s[c]](a["get"+s[c]]()+g,d||!1);g!=b&&6>c&&J(a,c+1,(b-g)*K[c],d)}function L(a,c,b){a=a.clone().setUTCMode(!0,!0);c=h(c).setUTCMode(!0,!0);var d=0;if(0==b||1==b){for(var g=6;g>=b;g--)d/=K[g],d+=p(c,!1,g)-p(a,!1,g);1==b&&(d+=12*(c.getFullYear()-a.getFullYear()))}else 2==b?(b=a.toDate().setUTCHours(0,0,0,0),d=c.toDate().setUTCHours(0,0,0,0),d=m.round((d-b)/864E5)+(c-d-(a-b))/864E5):d=(c-a)/[36E5,6E4,1E3,1][b-3];return d}function w(a){var c=a(0),b=a(1),d=a(2);
|
|
a=new f(r(c,b,d));c=x(M(c,b,d));return m.floor(m.round((a-c)/864E5)/7)+1}function M(a,c,b){c=new f(r(a,c,b));return c<x(a)?a-1:c>=x(a+1)?a+1:a}function x(a){a=new f(r(a,0,4));a.setUTCDate(a.getUTCDate()-(a.getUTCDay()+6)%7);return a}function N(a,c,b,d){var g=n(p,a,d),e=n(H,a,d);b===t&&(b=M(g(0),g(1),g(2)));b=x(b);d||(b=v(b));a.setTime(+b);e(2,[g(2)+7*(c-1)])}function O(a,c,b,d,g){var e=h.locales,f=e[h.defaultLocale]||{},l=n(p,a,g);b=("string"==typeof b?e[b]:b)||{};return B(a,c,function(a){if(d)for(var b=
|
|
(7==a?2:a)-1;0<=b;b--)d.push(l(b));return l(a)},function(a){return b[a]||f[a]},g)}function B(a,c,b,d,e){for(var f,h,l="";f=c.match(R);){l+=c.substr(0,f.index);if(f[1]){h=l;for(var l=a,k=f[1],p=b,q=d,r=e,m=k.length,n=void 0,s="";0<m;)n=S(l,k.substr(0,m),p,q,r),n!==t?(s+=n,k=k.substr(m),m=k.length):m--;l=h+(s+k)}else f[3]?(h=B(a,f[4],b,d,e),parseInt(h.replace(/\D/g,""),10)&&(l+=h)):l+=f[7]||"'";c=c.substr(f.index+f[0].length)}return l+c}function S(a,c,b,d,e){var f=h.formatters[c];if("string"==typeof f)return B(a,
|
|
f,b,d,e);if("function"==typeof f)return f(a,e||!1,d);switch(c){case "fff":return k(b(6),3);case "s":return b(5);case "ss":return k(b(5));case "m":return b(4);case "mm":return k(b(4));case "h":return b(3)%12||12;case "hh":return k(b(3)%12||12);case "H":return b(3);case "HH":return k(b(3));case "d":return b(2);case "dd":return k(b(2));case "ddd":return d("dayNamesShort")[b(7)]||"";case "dddd":return d("dayNames")[b(7)]||"";case "M":return b(1)+1;case "MM":return k(b(1)+1);case "MMM":return d("monthNamesShort")[b(1)]||
|
|
"";case "MMMM":return d("monthNames")[b(1)]||"";case "yy":return(b(0)+"").substring(2);case "yyyy":return b(0);case "t":return y(b,d).substr(0,1).toLowerCase();case "tt":return y(b,d).toLowerCase();case "T":return y(b,d).substr(0,1);case "TT":return y(b,d);case "z":case "zz":case "zzz":return e?c="Z":(d=a.getTimezoneOffset(),a=0>d?"+":"-",b=m.floor(m.abs(d)/60),d=m.abs(d)%60,e=b,"zz"==c?e=k(b):"zzz"==c&&(e=k(b)+":"+k(d)),c=a+e),c;case "w":return w(b);case "ww":return k(w(b));case "S":return c=b(2),
|
|
10<c&&20>c?"th":["st","nd","rd"][c%10-1]||"th"}}function y(a,c){return 12>a(3)?c("amDesignator"):c("pmDesignator")}function C(a){return!isNaN(+a[0])}function p(a,c,b){return a["get"+(c?"UTC":"")+s[b]]()}function H(a,c,b,d){a["set"+(c?"UTC":"")+s[b]].apply(a,d)}function v(a){return new f(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds())}function I(a,c){return 32-(new f(r(a,c,32))).getUTCDate()}function D(a){return function(){return a.apply(t,
|
|
[this].concat(u(arguments)))}}function n(a){var c=u(arguments,1);return function(){return a.apply(t,c.concat(u(arguments)))}}function u(a,c,b){return E.prototype.slice.call(a,c||0,b===t?a.length:b)}function P(a,c){for(var b=0;b<a.length;b++)c(a[b],b)}function k(a,c){c=c||2;for(a+="";a.length<c;)a="0"+a;return a}var s="FullYear Month Date Hours Minutes Seconds Milliseconds Day Year".split(" "),Q=["Years","Months","Days"],K=[12,31,24,60,60,1E3,1],R=/(([a-zA-Z])\2*)|(\((('.*?'|\(.*?\)|.)*?)\))|('(.*?)')/,
|
|
r=f.UTC,z=f.prototype.toUTCString,e=h.prototype;e.length=1;e.splice=E.prototype.splice;e.getUTCMode=D(q);e.setUTCMode=D(F);e.getTimezoneOffset=function(){return q(this)?0:this[0].getTimezoneOffset()};P(s,function(a,c){e["get"+a]=function(){return p(this[0],q(this),c)};8!=c&&(e["getUTC"+a]=function(){return p(this[0],!0,c)});7!=c&&(e["set"+a]=function(a){G(this,c,a,arguments,q(this));return this},8!=c&&(e["setUTC"+a]=function(a){G(this,c,a,arguments,!0);return this},e["add"+(Q[c]||a)]=function(a,d){J(this,
|
|
c,a,d);return this},e["diff"+(Q[c]||a)]=function(a){return L(this,a,c)}))});e.getWeek=function(){return w(n(p,this,!1))};e.getUTCWeek=function(){return w(n(p,this,!0))};e.setWeek=function(a,c){N(this,a,c,!1);return this};e.setUTCWeek=function(a,c){N(this,a,c,!0);return this};e.addWeeks=function(a){return this.addDays(7*Number(a))};e.diffWeeks=function(a){return L(this,a,2)/7};h.parsers=[function(a,c,b){if(a=a.match(/^(\d{4})(-(\d{2})(-(\d{2})([T ](\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/)){var d=
|
|
new f(r(a[1],a[3]?a[3]-1:0,a[5]||1,a[7]||0,a[8]||0,a[10]||0,a[12]?1E3*Number("0."+a[12]):0));a[13]?a[14]&&d.setUTCMinutes(d.getUTCMinutes()+("-"==a[15]?1:-1)*(60*Number(a[16])+(a[18]?Number(a[18]):0))):c||(d=v(d));return b.setTime(+d)}}];h.parse=function(a){return+h(""+a)};e.toString=function(a,c,b){return a!==t&&C(this)?O(this,a,c,b,q(this)):this[0].toString()};e.toUTCString=e.toGMTString=function(a,c,b){return a!==t&&C(this)?O(this,a,c,b,!0):this[0].toUTCString()};e.toISOString=function(){return this.toUTCString("yyyy-MM-dd'T'HH:mm:ss(.fff)zzz")};
|
|
h.defaultLocale="";h.locales={"":{monthNames:"January February March April May June July August September October November December".split(" "),monthNamesShort:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),dayNames:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),dayNamesShort:"Sun Mon Tue Wed Thu Fri Sat".split(" "),amDesignator:"AM",pmDesignator:"PM"}};h.formatters={i:"yyyy-MM-dd'T'HH:mm:ss(.fff)",u:"yyyy-MM-dd'T'HH:mm:ss(.fff)zzz"};P("getTime valueOf toDateString toTimeString toLocaleString toLocaleDateString toLocaleTimeString toJSON".split(" "),
|
|
function(a){e[a]=function(){return this[0][a]()}});e.setTime=function(a){this[0].setTime(a);return this};e.valid=D(C);e.clone=function(){return new h(this)};e.clearTime=function(){return this.setHours(0,0,0,0)};e.toDate=function(){return new f(+this[0])};h.now=function(){return+new f};h.today=function(){return(new h).clearTime()};h.UTC=r;h.getDaysInMonth=I;return h}(Date,Math,Array);
|