Last active
August 29, 2015 13:56
-
-
Save bugs181/8819564 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @overview datejs | |
* @version 1.0.0alpha-2014-01-07 | |
* @author Gregory Wild-Smith <[email protected]> | |
* @copyright 2014 Gregory Wild-Smith | |
* @license MIT | |
* @homepage https://github.com/abritinthebay/datejs | |
*/ | |
/* | |
2014 Gregory Wild-Smith | |
@license MIT | |
@homepage https://github.com/abritinthebay/datejs | |
2014 Gregory Wild-Smith | |
@license MIT | |
@homepage https://github.com/abritinthebay/datejs | |
*/ | |
Date.CultureStrings=Date.CultureStrings||{}; | |
Date.CultureStrings["en-US"]={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",Sunday:"Sunday",Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday",Sun:"Sun",Mon:"Mon",Tue:"Tue",Wed:"Wed",Thu:"Thu",Fri:"Fri",Sat:"Sat",Su:"Su",Mo:"Mo",Tu:"Tu",We:"We",Th:"Th",Fr:"Fr",Sa:"Sa",S_Sun_Initial:"S",M_Mon_Initial:"M",T_Tue_Initial:"T",W_Wed_Initial:"W",T_Thu_Initial:"T",F_Fri_Initial:"F",S_Sat_Initial:"S",January:"January", | |
February:"February",March:"March",April:"April",May:"May",June:"June",July:"July",August:"August",September:"September",October:"October",November:"November",December:"December",Jan_Abbr:"Jan",Feb_Abbr:"Feb",Mar_Abbr:"Mar",Apr_Abbr:"Apr",May_Abbr:"May",Jun_Abbr:"Jun",Jul_Abbr:"Jul",Aug_Abbr:"Aug",Sep_Abbr:"Sep",Oct_Abbr:"Oct",Nov_Abbr:"Nov",Dec_Abbr:"Dec",AM:"AM",PM:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,mdy:"mdy","M/d/yyyy":"M/d/yyyy","dddd, MMMM dd, yyyy":"dddd, MMMM dd, yyyy","h:mm tt":"h:mm tt", | |
"h:mm:ss tt":"h:mm:ss tt","dddd, MMMM dd, yyyy h:mm:ss tt":"dddd, MMMM dd, yyyy h:mm:ss tt","yyyy-MM-ddTHH:mm:ss":"yyyy-MM-ddTHH:mm:ss","yyyy-MM-dd HH:mm:ssZ":"yyyy-MM-dd HH:mm:ssZ","ddd, dd MMM yyyy HH:mm:ss":"ddd, dd MMM yyyy HH:mm:ss","MMMM dd":"MMMM dd","MMMM, yyyy":"MMMM, yyyy","/jan(uary)?/":"jan(uary)?","/feb(ruary)?/":"feb(ruary)?","/mar(ch)?/":"mar(ch)?","/apr(il)?/":"apr(il)?","/may/":"may","/jun(e)?/":"jun(e)?","/jul(y)?/":"jul(y)?","/aug(ust)?/":"aug(ust)?","/sep(t(ember)?)?/":"sep(t(ember)?)?", | |
"/oct(ober)?/":"oct(ober)?","/nov(ember)?/":"nov(ember)?","/dec(ember)?/":"dec(ember)?","/^su(n(day)?)?/":"^su(n(day)?)?","/^mo(n(day)?)?/":"^mo(n(day)?)?","/^tu(e(s(day)?)?)?/":"^tu(e(s(day)?)?)?","/^we(d(nesday)?)?/":"^we(d(nesday)?)?","/^th(u(r(s(day)?)?)?)?/":"^th(u(r(s(day)?)?)?)?","/^fr(i(day)?)?/":"^fr(i(day)?)?","/^sa(t(urday)?)?/":"^sa(t(urday)?)?","/^next/":"^next","/^last|past|prev(ious)?/":"^last|past|prev(ious)?","/^(\\+|aft(er)?|from|hence)/":"^(\\+|aft(er)?|from|hence)","/^(\\-|bef(ore)?|ago)/":"^(\\-|bef(ore)?|ago)", | |
"/^yes(terday)?/":"^yes(terday)?","/^t(od(ay)?)?/":"^t(od(ay)?)?","/^tom(orrow)?/":"^tom(orrow)?","/^n(ow)?/":"^n(ow)?","/^ms|milli(second)?s?/":"^ms|milli(second)?s?","/^sec(ond)?s?/":"^sec(ond)?s?","/^mn|min(ute)?s?/":"^mn|min(ute)?s?","/^h(our)?s?/":"^h(our)?s?","/^w(eek)?s?/":"^w(eek)?s?","/^m(onth)?s?/":"^m(onth)?s?","/^d(ay)?s?/":"^d(ay)?s?","/^y(ear)?s?/":"^y(ear)?s?","/^(a|p)/":"^(a|p)","/^(a\\.?m?\\.?|p\\.?m?\\.?)/":"^(a\\.?m?\\.?|p\\.?m?\\.?)","/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)/":"^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)", | |
"/^\\s*(st|nd|rd|th)/":"^\\s*(st|nd|rd|th)","/^\\s*(\\:|a(?!u|p)|p)/":"^\\s*(\\:|a(?!u|p)|p)",LINT:"LINT",TOT:"TOT",CHAST:"CHAST",NZST:"NZST",NFT:"NFT",SBT:"SBT",AEST:"AEST",ACST:"ACST",JST:"JST",CWST:"CWST",CT:"CT",ICT:"ICT",MMT:"MMT",BIOT:"BST",NPT:"NPT",IST:"IST",PKT:"PKT",AFT:"AFT",MSK:"MSK",IRST:"IRST",FET:"FET",EET:"EET",CET:"CET",UTC:"UTC",GMT:"GMT",CVT:"CVT",GST:"GST",BRT:"BRT",NST:"NST",AST:"AST",EST:"EST",CST:"CST",MST:"MST",PST:"PST",AKST:"AKST",MIT:"MIT",HST:"HST",SST:"SST",BIT:"BIT", | |
CHADT:"CHADT",NZDT:"NZDT",AEDT:"AEDT",ACDT:"ACDT",AZST:"AZST",IRDT:"IRDT",EEST:"EEST",CEST:"CEST",BST:"BST",PMDT:"PMDT",ADT:"ADT",NDT:"NDT",EDT:"EDT",CDT:"CDT",MDT:"MDT",PDT:"PDT",AKDT:"AKDT",HADT:"HADT"};Date.CultureStrings.lang="en-US"; | |
(function(){function g(b){var a,c,e,d=0,g=h,m=[],t=b.length;for(a=0;a<t;a++)c=b.charCodeAt(a),e=f[c],d=g!==h?c&63|d<<6:255>>e&c,g=f[256+g+e],g===h&&(65535<d?m.push(55232+(d>>10),56320+(d&1023)):m.push(d));return String.fromCharCode.apply(null,m)}var h=0,f=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, | |
0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,0,12,24,36,60,96,84,12,12,12,48,72,12,12,12,12,12,12,12,12,12,12,12,12,12,0,12,12,12,12,12,0,12,0,12,12,12,24,12,12,12,12,12,24,12,24,12,12,12,12,12,12,12,12,12,24,12,12,12,12,12,24,12,12,12,12,12,12,12,24,12,12,12,12,12,12,12,12,12, | |
36,12,36,12,12,12,36,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,12,12,12,12,12],a=Date,d=Date.CultureStrings?Date.CultureStrings.lang:null,b={},c=function(a,c){var e,f,m,h=c?c:d;if(Date.CultureStrings&&Date.CultureStrings[h]&&Date.CultureStrings[h][a])e="string"===typeof Date.CultureStrings[h][a]?g(Date.CultureStrings[h][a]):Date.CultureStrings[h][a];else switch(a){case "name":e="en-US";break;case "englishName":e="English (United States)";break;case "nativeName":e="English (United States)"; | |
break;default:if(e=a,f=a.split("_"),m=f.length,1<m&&"/"!==a.charAt(0)&&(m=f[m-1].toLowerCase(),"initial"===m||"abbr"===m))e=f[0]}"/"===a.charAt(0)&&(e=Date.CultureStrings&&Date.CultureStrings[h]&&Date.CultureStrings[h][a]?RegExp(g(Date.CultureStrings[h][a]),"i"):RegExp(a.replace(RegExp("/","g"),""),"i"));b[a]=a;return e},e=function(b){b=Date.Config.i18n+b+".js";var a=document.getElementsByTagName("head")[0]||document.documentElement,c=document.createElement("script");c.src=b;var e={done:function(){}}; | |
c.onload=c.onreadystatechange=function(){this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(done=!0,e.done(),a.removeChild(c))};setTimeout(function(){a.insertBefore(c,a.firstChild)},0);return{done:function(b){e.done=function(){b&&b()}}}},m=function(){var b={name:c("name"),englishName:c("englishName"),nativeName:c("nativeName"),dayNames:[c("Sunday"),c("Monday"),c("Tuesday"),c("Wednesday"),c("Thursday"),c("Friday"),c("Saturday")],abbreviatedDayNames:[c("Sun"),c("Mon"),c("Tue"), | |
c("Wed"),c("Thu"),c("Fri"),c("Sat")],shortestDayNames:[c("Su"),c("Mo"),c("Tu"),c("We"),c("Th"),c("Fr"),c("Sa")],firstLetterDayNames:[c("S_Sun_Initial"),c("M_Mon_Initial"),c("T_Tues_Initial"),c("W_Wed_Initial"),c("T_Thu_Initial"),c("F_Fri_Initial"),c("S_Sat_Initial")],monthNames:[c("January"),c("February"),c("March"),c("April"),c("May"),c("June"),c("July"),c("August"),c("September"),c("October"),c("November"),c("December")],abbreviatedMonthNames:[c("Jan_Abbr"),c("Feb_Abbr"),c("Mar_Abbr"),c("Apr_Abbr"), | |
c("May_Abbr"),c("Jun_Abbr"),c("Jul_Abbr"),c("Aug_Abbr"),c("Sep_Abbr"),c("Oct_Abbr"),c("Nov_Abbr"),c("Dec_Abbr")],amDesignator:c("AM"),pmDesignator:c("PM"),firstDayOfWeek:c("firstDayOfWeek"),twoDigitYearMax:c("twoDigitYearMax"),dateElementOrder:c("mdy"),formatPatterns:{shortDate:c("M/d/yyyy"),longDate:c("dddd, MMMM dd, yyyy"),shortTime:c("h:mm tt"),longTime:c("h:mm:ss tt"),fullDateTime:c("dddd, MMMM dd, yyyy h:mm:ss tt"),sortableDateTime:c("yyyy-MM-ddTHH:mm:ss"),universalSortableDateTime:c("yyyy-MM-dd HH:mm:ssZ"), | |
rfc1123:c("ddd, dd MMM yyyy HH:mm:ss"),monthDay:c("MMMM dd"),yearMonth:c("MMMM, yyyy")},regexPatterns:{inTheMorning:c("/( in the )(morn(ing)?)\\b/"),thisMorning:c("/(this )(morn(ing)?)\\b/"),amThisMorning:c("/(\b\\d(am)? )(this )(morn(ing)?)/"),inTheEvening:c("/( in the )(even(ing)?)\\b/"),thisEvening:c("/(this )(even(ing)?)\\b/"),pmThisEvening:c("/(\b\\d(pm)? )(this )(even(ing)?)/"),jan:c("/jan(uary)?/"),feb:c("/feb(ruary)?/"),mar:c("/mar(ch)?/"),apr:c("/apr(il)?/"),may:c("/may/"),jun:c("/jun(e)?/"), | |
jul:c("/jul(y)?/"),aug:c("/aug(ust)?/"),sep:c("/sep(t(ember)?)?/"),oct:c("/oct(ober)?/"),nov:c("/nov(ember)?/"),dec:c("/dec(ember)?/"),sun:c("/^su(n(day)?)?/"),mon:c("/^mo(n(day)?)?/"),tue:c("/^tu(e(s(day)?)?)?/"),wed:c("/^we(d(nesday)?)?/"),thu:c("/^th(u(r(s(day)?)?)?)?/"),fri:c("/fr(i(day)?)?/"),sat:c("/^sa(t(urday)?)?/"),future:c("/^next/"),past:c("/last|past|prev(ious)?/"),add:c("/^(\\+|aft(er)?|from|hence)/"),subtract:c("/^(\\-|bef(ore)?|ago)/"),yesterday:c("/^yes(terday)?/"),today:c("/^t(od(ay)?)?/"), | |
tomorrow:c("/^tom(orrow)?/"),now:c("/^n(ow)?/"),millisecond:c("/^ms|milli(second)?s?/"),second:c("/^sec(ond)?s?/"),minute:c("/^mn|min(ute)?s?/"),hour:c("/^h(our)?s?/"),week:c("/^w(eek)?s?/"),month:c("/^m(onth)?s?/"),day:c("/^d(ay)?s?/"),year:c("/^y(ear)?s?/"),shortMeridian:c("/^(a|p)/"),longMeridian:c("/^(a\\.?m?\\.?|p\\.?m?\\.?)/"),timezone:c("/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)/"),ordinalSuffix:c("/^\\s*(st|nd|rd|th)/"),timeContext:c("/^\\s*(\\:|a(?!u|p)|p)/")}, | |
timezones:[],abbreviatedTimeZoneDST:{},abbreviatedTimeZoneStandard:{}};b.abbreviatedTimeZoneDST[c("CHADT")]="+1345";b.abbreviatedTimeZoneDST[c("NZDT")]="+1300";b.abbreviatedTimeZoneDST[c("AEDT")]="+1100";b.abbreviatedTimeZoneDST[c("ACDT")]="+1030";b.abbreviatedTimeZoneDST[c("AZST")]="+0500";b.abbreviatedTimeZoneDST[c("IRDT")]="+0430";b.abbreviatedTimeZoneDST[c("EEST")]="+0300";b.abbreviatedTimeZoneDST[c("CEST")]="+0200";b.abbreviatedTimeZoneDST[c("BST")]="+0100";b.abbreviatedTimeZoneDST[c("PMDT")]= | |
"-0200";b.abbreviatedTimeZoneDST[c("ADT")]="-0300";b.abbreviatedTimeZoneDST[c("NDT")]="-0230";b.abbreviatedTimeZoneDST[c("EDT")]="-0400";b.abbreviatedTimeZoneDST[c("CDT")]="-0500";b.abbreviatedTimeZoneDST[c("MDT")]="-0600";b.abbreviatedTimeZoneDST[c("PDT")]="-0700";b.abbreviatedTimeZoneDST[c("AKDT")]="-0800";b.abbreviatedTimeZoneDST[c("HADT")]="-0900";b.abbreviatedTimeZoneStandard[c("LINT")]="+1400";b.abbreviatedTimeZoneStandard[c("TOT")]="+1300";b.abbreviatedTimeZoneStandard[c("CHAST")]="+1245"; | |
b.abbreviatedTimeZoneStandard[c("NZST")]="+1200";b.abbreviatedTimeZoneStandard[c("NFT")]="+1130";b.abbreviatedTimeZoneStandard[c("SBT")]="+1100";b.abbreviatedTimeZoneStandard[c("AEST")]="+1000";b.abbreviatedTimeZoneStandard[c("ACST")]="+0930";b.abbreviatedTimeZoneStandard[c("JST")]="+0900";b.abbreviatedTimeZoneStandard[c("CWST")]="+0845";b.abbreviatedTimeZoneStandard[c("CT")]="+0800";b.abbreviatedTimeZoneStandard[c("ICT")]="+0700";b.abbreviatedTimeZoneStandard[c("MMT")]="+0630";b.abbreviatedTimeZoneStandard[c("BST")]= | |
"+0600";b.abbreviatedTimeZoneStandard[c("NPT")]="+0545";b.abbreviatedTimeZoneStandard[c("IST")]="+0530";b.abbreviatedTimeZoneStandard[c("PKT")]="+0500";b.abbreviatedTimeZoneStandard[c("AFT")]="+0430";b.abbreviatedTimeZoneStandard[c("MSK")]="+0400";b.abbreviatedTimeZoneStandard[c("IRST")]="+0330";b.abbreviatedTimeZoneStandard[c("FET")]="+0300";b.abbreviatedTimeZoneStandard[c("EET")]="+0200";b.abbreviatedTimeZoneStandard[c("CET")]="+0100";b.abbreviatedTimeZoneStandard[c("GMT")]="+0000";b.abbreviatedTimeZoneStandard[c("UTC")]= | |
"+0000";b.abbreviatedTimeZoneStandard[c("CVT")]="-0100";b.abbreviatedTimeZoneStandard[c("GST")]="-0200";b.abbreviatedTimeZoneStandard[c("BRT")]="-0300";b.abbreviatedTimeZoneStandard[c("NST")]="-0330";b.abbreviatedTimeZoneStandard[c("AST")]="-0400";b.abbreviatedTimeZoneStandard[c("EST")]="-0500";b.abbreviatedTimeZoneStandard[c("CST")]="-0600";b.abbreviatedTimeZoneStandard[c("MST")]="-0700";b.abbreviatedTimeZoneStandard[c("PST")]="-0800";b.abbreviatedTimeZoneStandard[c("AKST")]="-0900";b.abbreviatedTimeZoneStandard[c("MIT")]= | |
"-0930";b.abbreviatedTimeZoneStandard[c("HST")]="-1000";b.abbreviatedTimeZoneStandard[c("SST")]="-1100";b.abbreviatedTimeZoneStandard[c("BIT")]="-1200";for(var a in b.abbreviatedTimeZoneStandard)b.abbreviatedTimeZoneStandard.hasOwnProperty(a)&&b.timezones.push({name:a,offset:b.abbreviatedTimeZoneStandard[a]});for(a in b.abbreviatedTimeZoneDST)b.abbreviatedTimeZoneDST.hasOwnProperty(a)&&b.timezones.push({name:a,offset:b.abbreviatedTimeZoneDST[a],dst:!0});return b};a.i18n={__:function(b,a){return c(b, | |
a)},currentLanguage:function(){return d||"en-US"},setLanguage:function(b,a){if(a||"en-US"===b||Date.CultureStrings&&Date.CultureStrings[b])d=b,Date.CultureStrings.lang=b,Date.CultureInfo=m();else if(!Date.CultureStrings||!Date.CultureStrings[b])if("undefined"!==typeof exports&&this.exports!==exports)try{require("../i18n/"+b+".js"),d=b,Date.CultureStrings.lang=b,Date.CultureInfo=m()}catch(c){throw Error("The DateJS IETF language tag '"+b+"' could not be loaded by Node. It likely does not exist."); | |
}else Date.Config&&Date.Config.i18n?e(b).done(function(){d=b;Date.CultureStrings.lang=b;Date.CultureInfo=m()}):Date.console.error("The DateJS IETF language tag '"+b+"' is not available and has not been loaded.")},getLoggedKeys:function(){return b},updateCultureInfo:function(){Date.CultureInfo=m()}};a.i18n.updateCultureInfo()})(); | |
(function(){var g=Date,h=g.prototype,f=function(b,a){a||(a=2);return("000"+b).slice(-1*a)};g.console=console?console:{log:function(){},error:function(){}};g.initOverloads=function(){g.now?g._now||(g._now=g.now):g._now=function(){return(new Date).getTime()};g.now=function(b){return b?g.present():g._now()};h.toISOString||(h.toISOString=function(){return this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+ | |
"."+String((this.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"});void 0===h._toString&&(h._toString=h.toString)};g.initOverloads();h.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this};h.setTimeToNow=function(){var b=new Date;this.setHours(b.getHours());this.setMinutes(b.getMinutes());this.setSeconds(b.getSeconds());this.setMilliseconds(b.getMilliseconds());return this};g.today=function(){return(new Date).clearTime()};g.present=function(){return new Date}; | |
g.compare=function(b,a){if(isNaN(b)||isNaN(a))throw Error(b+" - "+a);if(b instanceof Date&&a instanceof Date)return b<a?-1:b>a?1:0;throw new TypeError(b+" - "+a);};g.equals=function(b,a){return 0===b.compareTo(a)};g.getDayName=function(b){return Date.CultureInfo.dayNames[b]};g.getDayNumberFromName=function(b){var a=Date.CultureInfo.dayNames,e=Date.CultureInfo.abbreviatedDayNames,d=Date.CultureInfo.shortestDayNames;b=b.toLowerCase();for(var k=0;k<a.length;k++)if(a[k].toLowerCase()===b||e[k].toLowerCase()=== | |
b||d[k].toLowerCase()===b)return k;return-1};g.getMonthNumberFromName=function(b){var a=Date.CultureInfo.monthNames,e=Date.CultureInfo.abbreviatedMonthNames;b=b.toLowerCase();for(var d=0;d<a.length;d++)if(a[d].toLowerCase()===b||e[d].toLowerCase()===b)return d;return-1};g.getMonthName=function(b){return Date.CultureInfo.monthNames[b]};g.isLeapYear=function(b){return 0===b%4&&0!==b%100||0===b%400};g.getDaysInMonth=function(b,a){!a&&g.validateMonth(b)&&(a=b,b=Date.today().getFullYear());return[31,g.isLeapYear(b)? | |
29:28,31,30,31,30,31,31,30,31,30,31][a]};g.getTimezoneAbbreviation=function(b,a){var e,d=a?Date.CultureInfo.abbreviatedTimeZoneDST:Date.CultureInfo.abbreviatedTimeZoneStandard;for(e in d)if(d.hasOwnProperty(e)&&d[e]===b)return e;return null};g.getTimezoneOffset=function(b,a){var e,d=[],k=Date.CultureInfo.timezones;for(e=0;e<k.length;e++)k[e].name===b.toUpperCase()&&d.push(e);if(!k[d[0]])return null;if(1!==d.length&&a)for(e=0;e<d.length;e++){if(k[d[e]].dst)return k[d[e]].offset}else return k[d[0]].offset}; | |
g.getQuarter=function(b){b=b||new Date;return[1,2,3,4][Math.floor(b.getMonth()/3)]};g.getDaysLeftInQuarter=function(b){b=b||new Date;var a=new Date(b);a.setMonth(a.getMonth()+3-a.getMonth()%3,0);return Math.floor((a-b)/864E5)};h.clone=function(){return new Date(this.getTime())};h.compareTo=function(b){return Date.compare(this,b)};h.equals=function(b){return Date.equals(this,void 0!==b?b:new Date)};h.between=function(b,a){return this.getTime()>=b.getTime()&&this.getTime()<=a.getTime()};h.isAfter=function(b){return 1=== | |
this.compareTo(b||new Date)};h.isBefore=function(b){return-1===this.compareTo(b||new Date)};h.isToday=h.isSameDay=function(b){return this.clone().clearTime().equals((b||new Date).clone().clearTime())};h.addMilliseconds=function(b){if(!b)return this;this.setTime(this.getTime()+1*b);return this};h.addSeconds=function(b){return b?this.addMilliseconds(1E3*b):this};h.addMinutes=function(b){return b?this.addMilliseconds(6E4*b):this};h.addHours=function(b){return b?this.addMilliseconds(36E5*b):this};h.addDays= | |
function(b){if(!b)return this;this.setDate(this.getDate()+1*b);return this};h.addWeekdays=function(b){if(!b)return this;var a=this.getDay(),e=Math.ceil(Math.abs(b)/7);(0===a||6===a)&&0<b&&(this.next().monday(),this.addDays(-1));if(0>b){for(;0>b;)this.addDays(-1),a=this.getDay(),0!==a&&6!==a&&b++;return this}if(5<b||6-a<=b)b+=2*e;return this.addDays(b)};h.addWeeks=function(b){return b?this.addDays(7*b):this};h.addMonths=function(b){if(!b)return this;var a=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+ | |
1*b);this.setDate(Math.min(a,g.getDaysInMonth(this.getFullYear(),this.getMonth())));return this};h.addQuarters=function(b){return b?this.addMonths(3*b):this};h.addYears=function(b){return b?this.addMonths(12*b):this};h.add=function(b){if("number"===typeof b)return this._orient=b,this;b.milliseconds&&this.addMilliseconds(b.milliseconds);b.seconds&&this.addSeconds(b.seconds);b.minutes&&this.addMinutes(b.minutes);b.hours&&this.addHours(b.hours);b.weeks&&this.addWeeks(b.weeks);b.months&&this.addMonths(b.months); | |
b.years&&this.addYears(b.years);b.days&&this.addDays(b.days);return this};h.getWeek=function(b){var a=new Date(this.valueOf());b?(a.addMinutes(a.getTimezoneOffset()),b=a.clone()):b=this;b=(b.getDay()+6)%7;a.setDate(a.getDate()-b+3);b=a.valueOf();a.setMonth(0,1);4!==a.getDay()&&a.setMonth(0,1+(4-a.getDay()+7)%7);return 1+Math.ceil((b-a)/6048E5)};h.getISOWeek=function(){return f(this.getWeek(!0))};h.setWeek=function(b){return this.moveToDayOfWeek(1,1<this.getDay()?-1:1).addWeeks(b-this.getWeek())}; | |
h.setQuarter=function(b){b=Math.abs(3*(b-1)+1);return this.setMonth(b,1)};h.getQuarter=function(){return Date.getQuarter(this)};h.getDaysLeftInQuarter=function(){return Date.getDaysLeftInQuarter(this)};var a=function(b,a,e,d){if("undefined"===typeof b)return!1;if("number"!==typeof b)throw new TypeError(b+" is not a Number.");return b<a||b>e?!1:!0};g.validateMillisecond=function(b){return a(b,0,999,"millisecond")};g.validateSecond=function(b){return a(b,0,59,"second")};g.validateMinute=function(b){return a(b, | |
0,59,"minute")};g.validateHour=function(b){return a(b,0,23,"hour")};g.validateDay=function(b,c,e){return a(b,1,g.getDaysInMonth(c,e),"day")};g.validateWeek=function(b){return a(b,0,53,"week")};g.validateMonth=function(b){return a(b,0,11,"month")};g.validateYear=function(b){return a(b,-271822,275760,"year")};h.set=function(b){g.validateMillisecond(b.millisecond)&&this.addMilliseconds(b.millisecond-this.getMilliseconds());g.validateSecond(b.second)&&this.addSeconds(b.second-this.getSeconds());g.validateMinute(b.minute)&& | |
this.addMinutes(b.minute-this.getMinutes());g.validateHour(b.hour)&&this.addHours(b.hour-this.getHours());g.validateMonth(b.month)&&this.addMonths(b.month-this.getMonth());g.validateYear(b.year)&&this.addYears(b.year-this.getFullYear());g.validateDay(b.day,this.getFullYear(),this.getMonth())&&this.addDays(b.day-this.getDate());b.timezone&&this.setTimezone(b.timezone);b.timezoneOffset&&this.setTimezoneOffset(b.timezoneOffset);b.week&&g.validateWeek(b.week)&&this.setWeek(b.week);return this};h.moveToFirstDayOfMonth= | |
function(){return this.set({day:1})};h.moveToLastDayOfMonth=function(){return this.set({day:g.getDaysInMonth(this.getFullYear(),this.getMonth())})};h.moveToNthOccurrence=function(b,a){if("Weekday"===b){if(0<a)this.moveToFirstDayOfMonth(),this.is().weekday()&&(a-=1);else if(0>a)this.moveToLastDayOfMonth(),this.is().weekday()&&(a+=1);else return this;return this.addWeekdays(a)}var e=0;if(0<a)e=a-1;else if(-1===a)return this.moveToLastDayOfMonth(),this.getDay()!==b&&this.moveToDayOfWeek(b,-1),this;return this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(b, | |
1).addWeeks(e)};h.moveToDayOfWeek=function(b,a){var e=(b-this.getDay()+7*(a||1))%7;return this.addDays(0===e?e+7*(a||1):e)};h.moveToMonth=function(b,a){var e=(b-this.getMonth()+12*(a||1))%12;return this.addMonths(0===e?e+12*(a||1):e)};h.getOrdinate=function(){var b=this.getDate();return d(b)};h.getOrdinalNumber=function(){return Math.ceil((this.clone().clearTime()-new Date(this.getFullYear(),0,1))/864E5)+1};h.getTimezone=function(){return g.getTimezoneAbbreviation(this.getUTCOffset(),this.isDaylightSavingTime())}; | |
h.setTimezoneOffset=function(b){var a=this.getTimezoneOffset();return(b=-6*Number(b)/10)||0===b?this.addMinutes(a-b):this};h.setTimezone=function(b){return this.setTimezoneOffset(g.getTimezoneOffset(b))};h.hasDaylightSavingTime=function(){return Date.today().set({month:0,day:1}).getTimezoneOffset()!==Date.today().set({month:6,day:1}).getTimezoneOffset()};h.isDaylightSavingTime=function(){return Date.today().set({month:0,day:1}).getTimezoneOffset()!==this.getTimezoneOffset()};h.getUTCOffset=function(b){b= | |
-10*(b||this.getTimezoneOffset())/6;if(0>b)return b=(b-1E4).toString(),b.charAt(0)+b.substr(2);b=(b+1E4).toString();return"+"+b.substr(1)};h.getElapsed=function(b){return(b||new Date)-this};var d=function(b){switch(1*b){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}};h.toString=function(b,a){var e=this;if(!a&&b&&1===b.length){var g,k=Date.CultureInfo.formatPatterns;e.t=e.toString;switch(b){case "d":return e.t(k.shortDate);case "D":return e.t(k.longDate); | |
case "F":return e.t(k.fullDateTime);case "m":return e.t(k.monthDay);case "r":case "R":return g=e.clone().addMinutes(e.getTimezoneOffset()),g.toString(k.rfc1123)+" GMT";case "s":return e.t(k.sortableDateTime);case "t":return e.t(k.shortTime);case "T":return e.t(k.longTime);case "u":return g=e.clone().addMinutes(e.getTimezoneOffset()),g.toString(k.universalSortableDateTime);case "y":return e.t(k.yearMonth)}}return b?b.replace(/((\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S|q|Q)(?![^\[]*\]))/g, | |
function(a){if("\\"===a.charAt(0))return a.replace("\\","");e.h=e.getHours;switch(a){case "hh":return f(13>e.h()?0===e.h()?12:e.h():e.h()-12);case "h":return 13>e.h()?0===e.h()?12:e.h():e.h()-12;case "HH":return f(e.h());case "H":return e.h();case "mm":return f(e.getMinutes());case "m":return e.getMinutes();case "ss":return f(e.getSeconds());case "s":return e.getSeconds();case "yyyy":return f(e.getFullYear(),4);case "yy":return f(e.getFullYear());case "dddd":return Date.CultureInfo.dayNames[e.getDay()]; | |
case "ddd":return Date.CultureInfo.abbreviatedDayNames[e.getDay()];case "dd":return f(e.getDate());case "d":return e.getDate();case "MMMM":return Date.CultureInfo.monthNames[e.getMonth()];case "MMM":return Date.CultureInfo.abbreviatedMonthNames[e.getMonth()];case "MM":return f(e.getMonth()+1);case "M":return e.getMonth()+1;case "t":return 12>e.h()?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case "tt":return 12>e.h()?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator; | |
case "S":return d(e.getDate());case "Q":return"Q"+e.getQuarter();case "q":return String(e.getQuarter())}}).replace(/\[|\]/g,""):this._toString()}})(); | |
(function(){Date.Parsing={Exception:function(a){this.message="Parse error at '"+a.substring(0,10)+" ...'"}};var g=Date.Parsing,h=[0,31,59,90,120,151,181,212,243,273,304,334],f=[0,31,60,91,121,152,182,213,244,274,305,335];g.isLeapYear=function(a){return 0===a%4&&0!==a%100||0===a%400};g.processTimeObject=function(a){var d,b;d=new Date;b=g.isLeapYear(a.year)?f:h;a.hours=a.hours?a.hours:0;a.minutes=a.minutes?a.minutes:0;a.seconds=a.seconds?a.seconds:0;a.milliseconds=a.milliseconds?a.milliseconds:0;a.year|| | |
(a.year=d.getFullYear());if(a.month||!a.week&&!a.dayOfYear)a.month=a.month?a.month:0,a.day=a.day?a.day:1,a.dayOfYear=b[a.month]+a.day;else for(a.dayOfYear||(a.weekDay=a.weekDay||0===a.weekDay?a.weekDay:1,d=new Date(a.year,0,4),d=0===d.getDay()?7:d.getDay(),a.dayOfYear=7*a.week+(0===a.weekDay?7:a.weekDay)-(d+3)),d=0;d<=b.length;d++)if(a.dayOfYear<b[d]||d===b.length){a.day=a.day?a.day:a.dayOfYear-b[d-1];break}else a.month=d;b=new Date(a.year,a.month,a.day,a.hours,a.minutes,a.seconds,a.milliseconds); | |
a.zone&&("Z"===a.zone.toUpperCase()||0===a.zone_hours&&0===a.zone_minutes?d=-(new Date).getTimezoneOffset():(d=60*a.zone_hours+(a.zone_minutes?a.zone_minutes:0),"+"===a.zone_sign&&(d*=-1),d-=(new Date).getTimezoneOffset()),b.setMinutes(b.getMinutes()+d));return b};g.ISO={regex:/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-4])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?\s?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/, | |
parse:function(a){a=a.match(this.regex);if(!a||!a.length)return null;var d={year:a[1]?Number(a[1]):a[1],month:a[5]?Number(a[5])-1:a[5],day:a[7]?Number(a[7]):a[7],week:a[8]?Number(a[8]):a[8],weekDay:a[9]?7===Math.abs(Number(a[9]))?0:Math.abs(Number(a[9])):a[9],dayOfYear:a[10]?Number(a[10]):a[10],hours:a[15]?Number(a[15]):a[15],minutes:a[16]?Number(a[16].replace(":","")):a[16],seconds:a[19]?Math.floor(Number(a[19].replace(":","").replace(",","."))):a[19],milliseconds:a[20]?1E3*Number(a[20].replace(",", | |
".")):a[20],zone:a[21],zone_sign:a[22],zone_hours:a[23]&&"undefined"!==typeof a[23]?Number(a[23]):a[23],zone_minutes:a[24]&&"undefined"!==typeof a[23]?Number(a[24]):a[24]};a[18]&&((a[18]=60*Number(a[18].replace(",",".")),d.minutes)?d.seconds||(d.seconds=a[18]):d.minutes=a[18]);return d.year&&(d.year||d.month||d.day||d.week||d.dayOfYear)?g.processTimeObject(d):null}};g.Numeric={regex:/\b([0-1]?[0-9])([0-3]?[0-9])([0-2]?[0-9]?[0-9][0-9])\b/i,parse:function(a){var d,b={},c=Date.CultureInfo.dateElementOrder.split(""); | |
if(isNaN(parseFloat(a))||!isFinite(a)||"+"===a[0]&&"-"===a[0])return null;if(5>a.length)return b.year=a,g.processTimeObject(b);a=a.match(this.regex);if(!a||!a.length)return null;for(d=0;d<c.length;d++)switch(c[d]){case "d":b.day=a[d+1];break;case "m":b.month=a[d+1]-1;break;case "y":b.year=a[d+1]}return g.processTimeObject(b)}};g.Normalizer={parse:function(a){var d=Date.CultureInfo.regexPatterns,b=Date.i18n.__;a=a.replace(d.jan.source,"January");a=a.replace(d.feb,"February");a=a.replace(d.mar,"March"); | |
a=a.replace(d.apr,"April");a=a.replace(d.may,"May");a=a.replace(d.jun,"June");a=a.replace(d.jul,"July");a=a.replace(d.aug,"August");a=a.replace(d.sep,"September");a=a.replace(d.oct,"October");a=a.replace(d.nov,"November");a=a.replace(d.dec,"December");a=a.replace(d.tomorrow,Date.today().addDays(1).toString("d"));a=a.replace(d.yesterday,Date.today().addDays(-1).toString("d"));a=a.replace(RegExp(d.today.source+"\\b","i"),Date.today().toString("d"));a=a.replace(/\bat\b/gi,"");a=a.replace(/\s{2,}/," "); | |
a=a.replace(RegExp("(\\b\\d\\d?("+b("AM")+"|"+b("PM")+")? )("+d.tomorrow.source.slice(1)+")","i"),function(a,b,d,k,f){return Date.today().addDays(1).toString("d")+" "+b});a=a.replace(RegExp("(("+d.past.source+")\\s("+d.mon.source+"))"),Date.today().last().monday().toString("d"));a=a.replace(RegExp("(("+d.past.source+")\\s("+d.tue.source+"))"),Date.today().last().tuesday().toString("d"));a=a.replace(RegExp("(("+d.past.source+")\\s("+d.wed.source+"))"),Date.today().last().wednesday().toString("d")); | |
a=a.replace(RegExp("(("+d.past.source+")\\s("+d.thu.source+"))"),Date.today().last().thursday().toString("d"));a=a.replace(RegExp("(("+d.past.source+")\\s("+d.fri.source+"))"),Date.today().last().friday().toString("d"));a=a.replace(RegExp("(("+d.past.source+")\\s("+d.sat.source+"))"),Date.today().last().saturday().toString("d"));a=a.replace(RegExp("(("+d.past.source+")\\s("+d.sun.source+"))"),Date.today().last().sunday().toString("d"));a=a.replace(d.amThisMorning,function(a,b){return b});a=a.replace(d.inTheMorning, | |
"am");a=a.replace(d.thisMorning,"9am");a=a.replace(d.amThisEvening,function(a,b){return b});a=a.replace(d.inTheEvening,"pm");return a=a.replace(d.thisEvening,"7pm")}}})(); | |
(function(){for(var g=Date.Parsing,h=g.Operators={rtoken:function(a){return function(c){var e=c.match(a);if(e)return[e[0],c.substring(e[0].length)];throw new g.Exception(c);}},token:function(a){return function(a){return h.rtoken(RegExp("^s*"+a+"s*"))(a)}},stoken:function(a){return h.rtoken(RegExp("^"+a))},until:function(a){return function(c){for(var e=[],d=null;c.length;){try{d=a.call(this,c)}catch(k){e.push(d[0]);c=d[1];continue}break}return[e,c]}},many:function(a){return function(c){for(var e=[], | |
d=null;c.length;){try{d=a.call(this,c)}catch(k){break}e.push(d[0]);c=d[1]}return[e,c]}},optional:function(a){return function(c){var e=null;try{e=a.call(this,c)}catch(d){return[null,c]}return[e[0],e[1]]}},not:function(a){return function(c){try{a.call(this,c)}catch(e){return[null,c]}throw new g.Exception(c);}},ignore:function(a){return a?function(c){var e=null,e=a.call(this,c);return[null,e[1]]}:null},product:function(){for(var a=arguments[0],c=Array.prototype.slice.call(arguments,1),e=[],d=0;d<a.length;d++)e.push(h.each(a[d], | |
c));return e},cache:function(a){var c={},e=null;return function(d){try{e=c[d]=c[d]||a.call(this,d)}catch(k){e=c[d]=k}if(e instanceof g.Exception)throw e;return e}},any:function(){var a=arguments;return function(c){for(var e=null,d=0;d<a.length;d++)if(null!=a[d]){try{e=a[d].call(this,c)}catch(k){e=null}if(e)return e}throw new g.Exception(c);}},each:function(){var a=arguments;return function(c){for(var e=[],d=null,k=0;k<a.length;k++)if(null!=a[k]){try{d=a[k].call(this,c)}catch(f){throw new g.Exception(c); | |
}e.push(d[0]);c=d[1]}return[e,c]}},all:function(){var a=a;return a.each(a.optional(arguments))},sequence:function(a,c,e){c=c||h.rtoken(/^\s*/);e=e||null;return 1==a.length?a[0]:function(d){for(var k=null,f=null,n=[],h=0;h<a.length;h++){try{k=a[h].call(this,d)}catch(p){break}n.push(k[0]);try{f=c.call(this,k[1])}catch(s){f=null;break}d=f[1]}if(!k)throw new g.Exception(d);if(f)throw new g.Exception(f[1]);if(e)try{k=e.call(this,k[1])}catch(u){throw new g.Exception(k[1]);}return[n,k?k[1]:d]}},between:function(a, | |
c,e){e=e||a;var d=h.each(h.ignore(a),c,h.ignore(e));return function(a){a=d.call(this,a);return[[a[0][0],r[0][2]],a[1]]}},list:function(a,c,d){c=c||h.rtoken(/^\s*/);d=d||null;return a instanceof Array?h.each(h.product(a.slice(0,-1),h.ignore(c)),a.slice(-1),h.ignore(d)):h.each(h.many(h.each(a,h.ignore(c))),px,h.ignore(d))},set:function(a,c,d){c=c||h.rtoken(/^\s*/);d=d||null;return function(f){for(var k=null,l=k=null,n=null,q=[[],f],p=!1,s=0;s<a.length;s++){k=l=null;p=1==a.length;try{k=a[s].call(this, | |
f)}catch(u){continue}n=[[k[0]],k[1]];if(0<k[1].length&&!p)try{l=c.call(this,k[1])}catch(t){p=!0}else p=!0;p||0!==l[1].length||(p=!0);if(!p){k=[];for(p=0;p<a.length;p++)s!=p&&k.push(a[p]);k=h.set(k,c).call(this,l[1]);0<k[0].length&&(n[0]=n[0].concat(k[0]),n[1]=k[1])}n[1].length<q[1].length&&(q=n);if(0===q[1].length)break}if(0===q[0].length)return q;if(d){try{l=d.call(this,q[1])}catch(v){throw new g.Exception(q[1]);}q[1]=l[1]}return q}},forward:function(a,c){return function(d){return a[c].call(this, | |
d)}},replace:function(a,c){return function(d){d=a.call(this,d);return[c,d[1]]}},process:function(a,c){return function(d){d=a.call(this,d);return[c.call(this,d[0]),d[1]]}},min:function(a,c){return function(d){var f=c.call(this,d);if(f[0].length<a)throw new g.Exception(d);return f}}},f=function(a){return function(){var c=null,d=[],f;1<arguments.length?c=Array.prototype.slice.call(arguments):arguments[0]instanceof Array&&(c=arguments[0]);if(c){if(f=c.shift(),0<f.length)return c.unshift(f[void 0]),d.push(a.apply(null, | |
c)),c.shift(),d}else return a.apply(null,arguments)}},a="optional not ignore cache".split(/\s/),d=0;d<a.length;d++)h[a[d]]=f(h[a[d]]);f=function(a){return function(){return arguments[0]instanceof Array?a.apply(null,arguments[0]):a.apply(null,arguments)}};a="each any all".split(/\s/);for(d=0;d<a.length;d++)h[a[d]]=f(h[a[d]])})(); | |
(function(){var g=Date,h=function(a){for(var b=[],c=0;c<a.length;c++)a[c]instanceof Array?b=b.concat(h(a[c])):a[c]&&b.push(a[c]);return b};g.Grammar={};g.Translator={hour:function(a){return function(){this.hour=Number(a)}},minute:function(a){return function(){this.minute=Number(a)}},second:function(a){return function(){this.second=Number(a)}},secondAndMillisecond:function(a){return function(){var b=a.match(/^([0-5][0-9])\.([0-9]{1,3})/);this.second=Number(b[1]);this.millisecond=Number(b[2])}},meridian:function(a){return function(){this.meridian= | |
a.slice(0,1).toLowerCase()}},timezone:function(a){return function(){var b=a.replace(/[^\d\+\-]/g,"");b.length?this.timezoneOffset=Number(b):this.timezone=a.toLowerCase()}},day:function(a){var b=a[0];return function(){this.day=Number(b.match(/\d+/)[0]);if(1>this.day)throw"invalid day";}},month:function(a){return function(){this.month=3===a.length?"jan feb mar apr may jun jul aug sep oct nov dec".indexOf(a)/4:Number(a)-1;if(0>this.month)throw"invalid month";}},year:function(a){return function(){var b= | |
Number(a);this.year=2<a.length?b:b+(b+2E3<Date.CultureInfo.twoDigitYearMax?2E3:1900)}},rday:function(a){return function(){switch(a){case "yesterday":this.days=-1;break;case "tomorrow":this.days=1;break;case "today":this.days=0;break;case "now":this.days=0,this.now=!0}}},finishExact:function(a){a=a instanceof Array?a:[a];for(var b=0;b<a.length;b++)a[b]&&a[b].call(this);a=new Date;!this.hour&&!this.minute||this.month||this.year||this.day||(this.day=a.getDate());this.year||(this.year=a.getFullYear()); | |
this.month||0===this.month||(this.month=a.getMonth());this.day||(this.day=1);this.hour||(this.hour=0);this.minute||(this.minute=0);this.second||(this.second=0);this.millisecond||(this.millisecond=0);this.meridian&&this.hour&&("p"==this.meridian&&12>this.hour?this.hour+=12:"a"==this.meridian&&12==this.hour&&(this.hour=0));if(this.day>g.getDaysInMonth(this.year,this.month))throw new RangeError(this.day+" is not a valid value for days.");a=new Date(this.year,this.month,this.day,this.hour,this.minute, | |
this.second,this.millisecond);100>this.year&&a.setFullYear(this.year);this.timezone?a.set({timezone:this.timezone}):this.timezoneOffset&&a.set({timezoneOffset:this.timezoneOffset});return a},finish:function(a){a=a instanceof Array?h(a):[a];if(0===a.length)return null;for(var b=0;b<a.length;b++)"function"==typeof a[b]&&a[b].call(this);a=g.today();if(!this.now||this.unit||this.operator)this.now&&(a=new Date);else return new Date;var b=!!(this.days&&null!==this.days||this.orient||this.operator),c,d, | |
e;e="past"==this.orient||"subtract"==this.operator?-1:1;this.now||-1=="hour minute second".indexOf(this.unit)||a.setTimeToNow();this.month&&"week"==this.unit&&(this.value=this.month+1,delete this.month,delete this.day);!this.month&&0!==this.month||-1=="year day hour minute second".indexOf(this.unit)||(this.value=this.month+1,this.month=null,b=!0);b||!this.weekday||this.day||this.days||(c=Date[this.weekday](),this.day=c.getDate(),this.month||(this.month=c.getMonth()),this.year=c.getFullYear());b&& | |
this.weekday&&"month"!=this.unit&&"week"!=this.unit&&(this.unit="day",c=g.getDayNumberFromName(this.weekday)-a.getDay(),d=7,this.days=c?(c+e*d)%d:e*d);this.month&&"day"==this.unit&&this.operator&&(this.value=this.month+1,this.month=null);null!=this.value&&null!=this.month&&null!=this.year&&(this.day=1*this.value);this.month&&!this.day&&this.value&&(a.set({day:1*this.value}),b||(this.day=1*this.value));this.month||!this.value||"month"!=this.unit||this.now||(this.month=this.value,b=!0);b&&(this.month|| | |
0===this.month)&&"year"!=this.unit&&(this.unit="month",c=this.month-a.getMonth(),d=12,this.months=c?(c+e*d)%d:e*d,this.month=null);this.unit||(this.unit="day");if(!this.value&&this.operator&&null!==this.operator&&this[this.unit+"s"]&&null!==this[this.unit+"s"])this[this.unit+"s"]=this[this.unit+"s"]+("add"==this.operator?1:-1)+(this.value||0)*e;else if(null==this[this.unit+"s"]||null!=this.operator)this.value||(this.value=1),this[this.unit+"s"]=this.value*e;this.meridian&&this.hour&&("p"==this.meridian&& | |
12>this.hour?this.hour+=12:"a"==this.meridian&&12==this.hour&&(this.hour=0));!this.weekday||"week"===this.unit||this.day||this.days||(c=Date[this.weekday](),this.day=c.getDate(),c.getMonth()!==a.getMonth()&&(this.month=c.getMonth()));!this.month&&0!==this.month||this.day||(this.day=1);if(!this.orient&&!this.operator&&"week"==this.unit&&this.value&&!this.day&&!this.month)return Date.today().setWeek(this.value);if("week"==this.unit&&this.weeks&&!this.day&&!this.month)return a=Date[this.weekday?this.weekday: | |
"today"]().addWeeks(this.weeks),this.now&&a.setTimeToNow(),a;b&&this.timezone&&this.day&&this.days&&(this.day=this.days);return b?a.add(this):a.set(this)}};var f=g.Parsing.Operators,a=g.Grammar,d=g.Translator,b;a.datePartDelimiter=f.rtoken(/^([\s\-\.\,\/\x27]+)/);a.timePartDelimiter=f.stoken(":");a.whiteSpace=f.rtoken(/^\s*/);a.generalDelimiter=f.rtoken(/^(([\s\,]|at|@|on)+)/);var c={};a.ctoken=function(a){var b=c[a];if(!b){for(var b=Date.CultureInfo.regexPatterns,d=a.split(/\s+/),e=[],g=0;g<d.length;g++)e.push(f.replace(f.rtoken(b[d[g]]), | |
d[g]));b=c[a]=f.any.apply(null,e)}return b};a.ctoken2=function(a){return f.rtoken(Date.CultureInfo.regexPatterns[a])};a.h=f.cache(f.process(f.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),d.hour));a.hh=f.cache(f.process(f.rtoken(/^(0[0-9]|1[0-2])/),d.hour));a.H=f.cache(f.process(f.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),d.hour));a.HH=f.cache(f.process(f.rtoken(/^([0-1][0-9]|2[0-3])/),d.hour));a.m=f.cache(f.process(f.rtoken(/^([0-5][0-9]|[0-9])/),d.minute));a.mm=f.cache(f.process(f.rtoken(/^[0-5][0-9]/),d.minute)); | |
a.s=f.cache(f.process(f.rtoken(/^([0-5][0-9]|[0-9])/),d.second));a.ss=f.cache(f.process(f.rtoken(/^[0-5][0-9]/),d.second));a["ss.s"]=f.cache(f.process(f.rtoken(/^[0-5][0-9]\.[0-9]{1,3}/),d.secondAndMillisecond));a.hms=f.cache(f.sequence([a.H,a.m,a.s],a.timePartDelimiter));a.t=f.cache(f.process(a.ctoken2("shortMeridian"),d.meridian));a.tt=f.cache(f.process(a.ctoken2("longMeridian"),d.meridian));a.z=f.cache(f.process(f.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),d.timezone));a.zz=f.cache(f.process(f.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/), | |
d.timezone));a.zzz=f.cache(f.process(a.ctoken2("timezone"),d.timezone));a.timeSuffix=f.each(f.ignore(a.whiteSpace),f.set([a.tt,a.zzz]));a.time=f.each(f.optional(f.ignore(f.stoken("T"))),a.hms,a.timeSuffix);a.d=f.cache(f.process(f.each(f.rtoken(/^([0-2]\d|3[0-1]|\d)/),f.optional(a.ctoken2("ordinalSuffix"))),d.day));a.dd=f.cache(f.process(f.each(f.rtoken(/^([0-2]\d|3[0-1])/),f.optional(a.ctoken2("ordinalSuffix"))),d.day));a.ddd=a.dddd=f.cache(f.process(a.ctoken("sun mon tue wed thu fri sat"),function(a){return function(){this.weekday= | |
a}}));a.M=f.cache(f.process(f.rtoken(/^(1[0-2]|0\d|\d)/),d.month));a.MM=f.cache(f.process(f.rtoken(/^(1[0-2]|0\d)/),d.month));a.MMM=a.MMMM=f.cache(f.process(a.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),d.month));a.y=f.cache(f.process(f.rtoken(/^(\d\d?)/),d.year));a.yy=f.cache(f.process(f.rtoken(/^(\d\d)/),d.year));a.yyy=f.cache(f.process(f.rtoken(/^(\d\d?\d?\d?)/),d.year));a.yyyy=f.cache(f.process(f.rtoken(/^(\d\d\d\d)/),d.year));b=function(){return f.each(f.any.apply(null,arguments), | |
f.not(a.ctoken2("timeContext")))};a.day=b(a.d,a.dd);a.month=b(a.M,a.MMM);a.year=b(a.yyyy,a.yy);a.orientation=f.process(a.ctoken("past future"),function(a){return function(){this.orient=a}});a.operator=f.process(a.ctoken("add subtract"),function(a){return function(){this.operator=a}});a.rday=f.process(a.ctoken("yesterday tomorrow today now"),d.rday);a.unit=f.process(a.ctoken("second minute hour day week month year"),function(a){return function(){this.unit=a}});a.value=f.process(f.rtoken(/^\d\d?(st|nd|rd|th)?/), | |
function(a){return function(){this.value=a.replace(/\D/g,"")}});a.expression=f.set([a.rday,a.operator,a.value,a.unit,a.orientation,a.ddd,a.MMM]);b=function(){return f.set(arguments,a.datePartDelimiter)};a.mdy=b(a.ddd,a.month,a.day,a.year);a.ymd=b(a.ddd,a.year,a.month,a.day);a.dmy=b(a.ddd,a.day,a.month,a.year);a.date=function(b){return(a[Date.CultureInfo.dateElementOrder]||a.mdy).call(this,b)};a.format=f.process(f.many(f.any(f.process(f.rtoken(/^(dd?d?d?(?!e)|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/), | |
function(b){if(a[b])return a[b];throw g.Parsing.Exception(b);}),f.process(f.rtoken(/^[^dMyhHmstz]+/),function(a){return f.ignore(f.stoken(a))}))),function(a){return f.process(f.each.apply(null,a),d.finishExact)});var e={},m=function(b){e[b]=e[b]||a.format(b)[0];return e[b]};a.allformats=function(a){var b=[];if(a instanceof Array)for(var c=0;c<a.length;c++)b.push(m(a[c]));else b.push(m(a));return b};a.formats=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(m(a[c]));return f.any.apply(null, | |
b)}return m(a)};a._formats=a.formats('"yyyy-MM-ddTHH:mm:ssZ";yyyy-MM-ddTHH:mm:ss.sz;yyyy-MM-ddTHH:mm:ssZ;yyyy-MM-ddTHH:mm:ssz;yyyy-MM-ddTHH:mm:ss;yyyy-MM-ddTHH:mmZ;yyyy-MM-ddTHH:mmz;yyyy-MM-ddTHH:mm;ddd, MMM dd, yyyy H:mm:ss tt;ddd MMM d yyyy HH:mm:ss zzz;MMddyyyy;ddMMyyyy;Mddyyyy;ddMyyyy;Mdyyyy;dMyyyy;yyyy;Mdyy;dMyy;d'.split(";"));a._start=f.process(f.set([a.date,a.time,a.expression],a.generalDelimiter,a.whiteSpace),d.finish);a.start=function(b){try{var c=a._formats.call({},b);if(0===c[1].length)return c}catch(d){}return a._start.call({}, | |
b)};g._parse||(g._parse=g.parse);g.parse=function(a){var b,c,d=null;if(!a)return null;if(a instanceof Date)return a.clone();4<=a.length&&"0"!==a.charAt(0)&&(b=g.Parsing.ISO.parse(a)||g.Parsing.Numeric.parse(a));if(b instanceof Date&&!isNaN(b.getTime()))return b;a=(b=a.match(/\b(\d+)(?:st|nd|rd|th)\b/))&&2===b.length?a.replace(b[0],b[1]):a;a=g.Parsing.Normalizer.parse(a);try{d=g.Grammar.start.call({},a.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"))}catch(e){return null}b=0===d[1].length?d[0]:null;if(null!== | |
b)return b;try{return(c=Date._parse(a))||0===c?new Date(c):null}catch(f){return null}};Date.getParseFunction=function(a){var b=Date.Grammar.allformats(a);return function(a){for(var c=null,d=0;d<b.length;d++){try{c=b[d].call({},a)}catch(e){continue}if(0===c[1].length)return c[0]}return null}};g.parseExact=function(a,b){return g.getParseFunction(b)(a)}})(); | |
(function(){var g=Date,h=g.prototype,f=Number.prototype;h._orient=1;h._nth=null;h._is=!1;h._same=!1;h._isSecond=!1;f._dateElement="days";h.next=function(){this._move=!0;this._orient=1;return this};g.next=function(){return g.today().next()};h.last=h.prev=h.previous=function(){this._move=!0;this._orient=-1;return this};g.last=g.prev=g.previous=function(){return g.today().last()};h.is=function(){this._is=!0;return this};h.same=function(){this._same=!0;this._isSecond=!1;return this};h.today=function(){return this.same().day()}; | |
h.weekday=function(){return this._nth?m("Weekday").call(this):this._move?this.addWeekdays(this._orient):this._is?(this._is=!1,!this.is().sat()&&!this.is().sun()):!1};h.weekend=function(){return this._is?(this._is=!1,this.is().sat()||this.is().sun()):!1};h.at=function(a){return"string"===typeof a?g.parse(this.toString("d")+" "+a):this.set(a)};f.fromNow=f.after=function(a){var b={};b[this._dateElement]=this;return(a?a.clone():new Date).add(b)};f.ago=f.before=function(a){var b={};b["s"!==this._dateElement[this._dateElement.length- | |
1]?this._dateElement+"s":this._dateElement]=-1*this;return(a?a.clone():new Date).add(b)};var a="sunday monday tuesday wednesday thursday friday saturday".split(/\s/),d="january february march april may june july august september october november december".split(/\s/),b="Millisecond Second Minute Hour Day Week Month Year Quarter Weekday".split(/\s/),c="Milliseconds Seconds Minutes Hours Date Week Month FullYear Quarter".split(/\s/),e="final first second third fourth fifth".split(/\s/);h.toObject=function(){for(var a= | |
{},d=0;d<b.length;d++)this["get"+c[d]]&&(a[b[d].toLowerCase()]=this["get"+c[d]]());return a};g.fromObject=function(a){a.week=null;return Date.today().set(a)};for(var m=function(a){return function(){if(this._is)return this._is=!1,this.getDay()===a;this._move&&(this._move=null);if(null!==this._nth){this._isSecond&&this.addSeconds(-1*this._orient);this._isSecond=!1;var b=this._nth;this._nth=null;var c=this.clone().moveToLastDayOfMonth();this.moveToNthOccurrence(a,b);if(this>c)throw new RangeError(g.getDayName(a)+ | |
" does not occur "+b+" times in the month of "+g.getMonthName(c.getMonth())+" "+c.getFullYear()+".");return this}return this.moveToDayOfWeek(a,this._orient)}},k=function(a){return function(){var b=g.today(),c=a-b.getDay();0===a&&1===Date.CultureInfo.firstDayOfWeek&&0!==b.getDay()&&(c+=7);return b.addDays(c)}},l=0;l<a.length;l++)g[a[l].toUpperCase()]=g[a[l].toUpperCase().substring(0,3)]=l,g[a[l]]=g[a[l].substring(0,3)]=k(l),h[a[l]]=h[a[l].substring(0,3)]=m(l);a=function(a){return function(){return this._is? | |
(this._is=!1,this.getMonth()===a):this.moveToMonth(a,this._orient)}};k=function(a){return function(){return g.today().set({month:a,day:1})}};for(l=0;l<d.length;l++)g[d[l].toUpperCase()]=g[d[l].toUpperCase().substring(0,3)]=l,g[d[l]]=g[d[l].substring(0,3)]=k(l),h[d[l]]=h[d[l].substring(0,3)]=a(l);a=function(a){return function(c){if(this._isSecond)return this._isSecond=!1,this;if(this._same){this._same=this._is=!1;var d=this.toObject();c=(c||new Date).toObject();for(var e="",f=a.toLowerCase(),f="s"=== | |
f[f.length-1]?f.substring(0,f.length-1):f,g=b.length-1;-1<g;g--){e=b[g].toLowerCase();if(d[e]!==c[e])return!1;if(f===e)break}return!0}"s"!==a.substring(a.length-1)&&(a+="s");this._move&&(this._move=null);return this["add"+a](this._orient)}};k=function(a){return function(){this._dateElement=a;return this}};for(l=0;l<b.length;l++)d=b[l].toLowerCase(),"weekday"!==d&&(h[d]=h[d+"s"]=a(b[l]),f[d]=f[d+"s"]=k(d+"s"));h._ss=a("Second");f=function(a){return function(b){if(this._same)return this._ss(b);if(b|| | |
0===b)return this.moveToNthOccurrence(b,a);this._nth=a;return 2!==a||void 0!==b&&null!==b?this:(this._isSecond=!0,this.addSeconds(this._orient))}};for(d=0;d<e.length;d++)h[e[d]]=0===d?f(-1):f(d)})(); | |
(function(){var g=Date,h=g.prototype,f=[],a=function(a,b){b||(b=2);return("000"+a).slice(-1*b)};g.normalizeFormat=function(a){return a};g.strftime=function(a,b){return(new Date(1E3*b)).$format(a)};g.strtotime=function(a){a=g.parse(a);a.addMinutes(-1*a.getTimezoneOffset());return Math.round(g.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds())/1E3)};h.$format=function(d){var b=this,c,e=function(a,c){f.push(a);return b.toString(a, | |
c)};return d?d.replace(/(%|\\)?.|%%/g,function(d){if("\\"===d.charAt(0)||"%%"===d.substring(0,2))return d.replace("\\","").replace("%%","%");switch(d){case "d":case "%d":return e("dd");case "D":case "%a":return e("ddd");case "j":case "%e":return e("d",!0);case "l":case "%A":return e("dddd");case "N":case "%u":return b.getDay()+1;case "S":return e("S");case "w":case "%w":return b.getDay();case "z":return b.getOrdinalNumber();case "%j":return a(b.getOrdinalNumber(),3);case "%U":d=b.clone().set({month:0, | |
day:1}).addDays(-1).moveToDayOfWeek(0);var h=b.clone().addDays(1).moveToDayOfWeek(0,-1);return h<d?"00":a((h.getOrdinalNumber()-d.getOrdinalNumber())/7+1);case "W":case "%V":return b.getISOWeek();case "%W":return a(b.getWeek());case "F":case "%B":return e("MMMM");case "m":case "%m":return e("MM");case "M":case "%b":case "%h":return e("MMM");case "n":return e("M");case "t":return g.getDaysInMonth(b.getFullYear(),b.getMonth());case "L":return g.isLeapYear(b.getFullYear())?1:0;case "o":case "%G":return b.setWeek(b.getISOWeek()).toString("yyyy"); | |
case "%g":return b.$format("%G").slice(-2);case "Y":case "%Y":return e("yyyy");case "y":case "%y":return e("yy");case "a":case "%p":return e("tt").toLowerCase();case "A":return e("tt").toUpperCase();case "g":case "%I":return e("h");case "G":return e("H");case "h":return e("hh");case "H":case "%H":return e("HH");case "i":case "%M":return e("mm");case "s":case "%S":return e("ss");case "u":return a(b.getMilliseconds(),3);case "I":return b.isDaylightSavingTime()?1:0;case "O":return b.getUTCOffset();case "P":return c= | |
b.getUTCOffset(),c.substring(0,c.length-2)+":"+c.substring(c.length-2);case "e":case "T":case "%z":case "%Z":return b.getTimezone();case "Z":return-60*b.getTimezoneOffset();case "B":return d=new Date,Math.floor((3600*d.getHours()+60*d.getMinutes()+d.getSeconds()+60*(d.getTimezoneOffset()+60))/86.4);case "c":return b.toISOString().replace(/\"/g,"");case "U":return g.strtotime("now");case "%c":return e("d")+" "+e("t");case "%C":return Math.floor(b.getFullYear()/100+1);case "%D":return e("MM/dd/yy"); | |
case "%n":return"\\n";case "%t":return"\\t";case "%r":return e("hh:mm tt");case "%R":return e("H:mm");case "%T":return e("H:mm:ss");case "%x":return e("d");case "%X":return e("t");default:return f.push(d),d}}):this._toString()};h.format||(h.format=h.$format)})(); | |
var TimeSpan=function(g,h,f,a,d){for(var b="days hours minutes seconds milliseconds".split(/\s+/),c=function(a){return function(){return this[a]}},e=function(a){return function(b){this[a]=b;return this}},m=0;m<b.length;m++){var k=b[m],l=k.slice(0,1).toUpperCase()+k.slice(1);TimeSpan.prototype[k]=0;TimeSpan.prototype["get"+l]=c(k);TimeSpan.prototype["set"+l]=e(k)}4===arguments.length?(this.setDays(g),this.setHours(h),this.setMinutes(f),this.setSeconds(a)):5===arguments.length?(this.setDays(g),this.setHours(h), | |
this.setMinutes(f),this.setSeconds(a),this.setMilliseconds(d)):1===arguments.length&&"number"===typeof g&&(b=0>g?-1:1,this.setMilliseconds(Math.abs(g)),this.setDays(Math.floor(this.getMilliseconds()/864E5)*b),this.setMilliseconds(this.getMilliseconds()%864E5),this.setHours(Math.floor(this.getMilliseconds()/36E5)*b),this.setMilliseconds(this.getMilliseconds()%36E5),this.setMinutes(Math.floor(this.getMilliseconds()/6E4)*b),this.setMilliseconds(this.getMilliseconds()%6E4),this.setSeconds(Math.floor(this.getMilliseconds()/ | |
1E3)*b),this.setMilliseconds(this.getMilliseconds()%1E3),this.setMilliseconds(this.getMilliseconds()*b));this.getTotalMilliseconds=function(){return 864E5*this.getDays()+36E5*this.getHours()+6E4*this.getMinutes()+1E3*this.getSeconds()};this.compareTo=function(a){var b=new Date(1970,1,1,this.getHours(),this.getMinutes(),this.getSeconds());a=null===a?new Date(1970,1,1,0,0,0):new Date(1970,1,1,a.getHours(),a.getMinutes(),a.getSeconds());return b<a?-1:b>a?1:0};this.equals=function(a){return 0===this.compareTo(a)}; | |
this.add=function(a){return null===a?this:this.addSeconds(a.getTotalMilliseconds()/1E3)};this.subtract=function(a){return null===a?this:this.addSeconds(-a.getTotalMilliseconds()/1E3)};this.addDays=function(a){return new TimeSpan(this.getTotalMilliseconds()+864E5*a)};this.addHours=function(a){return new TimeSpan(this.getTotalMilliseconds()+36E5*a)};this.addMinutes=function(a){return new TimeSpan(this.getTotalMilliseconds()+6E4*a)};this.addSeconds=function(a){return new TimeSpan(this.getTotalMilliseconds()+ | |
1E3*a)};this.addMilliseconds=function(a){return new TimeSpan(this.getTotalMilliseconds()+a)};this.get12HourHour=function(){return 12<this.getHours()?this.getHours()-12:0===this.getHours()?12:this.getHours()};this.getDesignator=function(){return 12>this.getHours()?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator};this.toString=function(a){this._toString=function(){return null!==this.getDays()&&0<this.getDays()?this.getDays()+"."+this.getHours()+":"+this.p(this.getMinutes())+":"+this.p(this.getSeconds()): | |
this.getHours()+":"+this.p(this.getMinutes())+":"+this.p(this.getSeconds())};this.p=function(a){return 2>a.toString().length?"0"+a:a};var b=this;return a?a.replace(/dd?|HH?|hh?|mm?|ss?|tt?/g,function(a){switch(a){case "d":return b.getDays();case "dd":return b.p(b.getDays());case "H":return b.getHours();case "HH":return b.p(b.getHours());case "h":return b.get12HourHour();case "hh":return b.p(b.get12HourHour());case "m":return b.getMinutes();case "mm":return b.p(b.getMinutes());case "s":return b.getSeconds(); | |
case "ss":return b.p(b.getSeconds());case "t":return(12>b.getHours()?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator).substring(0,1);case "tt":return 12>b.getHours()?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator}}):this._toString()};return this};Date.prototype.getTimeOfDay=function(){return new TimeSpan(0,this.getHours(),this.getMinutes(),this.getSeconds(),this.getMilliseconds())}; | |
var TimePeriod=function(g,h,f,a,d,b,c){for(var e="years months days hours minutes seconds milliseconds".split(/\s+/),m=function(a){return function(){return this[a]}},k=function(a){return function(b){this[a]=b;return this}},l=0;l<e.length;l++){var n=e[l],q=n.slice(0,1).toUpperCase()+n.slice(1);TimePeriod.prototype[n]=0;TimePeriod.prototype["get"+q]=m(n);TimePeriod.prototype["set"+q]=k(n)}if(7===arguments.length)this.years=g,this.months=h,this.setDays(f),this.setHours(a),this.setMinutes(d),this.setSeconds(b), | |
this.setMilliseconds(c);else if(2===arguments.length&&arguments[0]instanceof Date&&arguments[1]instanceof Date){e=g.clone();m=h.clone();k=e.clone();l=e>m?-1:1;this.years=m.getFullYear()-e.getFullYear();k.addYears(this.years);1===l?k>m&&0!==this.years&&this.years--:k<m&&0!==this.years&&this.years++;e.addYears(this.years);if(1===l)for(;e<m&&e.clone().addMonths(1)<=m;)e.addMonths(1),this.months++;else for(;e>m&&e.clone().addDays(-e.getDaysInMonth())>m;)e.addMonths(-1),this.months--;e=m-e;0!==e&&(e=new TimeSpan(e), | |
this.setDays(e.getDays()),this.setHours(e.getHours()),this.setMinutes(e.getMinutes()),this.setSeconds(e.getSeconds()),this.setMilliseconds(e.getMilliseconds()))}return this}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//var str = "monday-Thursday 9:00 PM - 12:00 PM, Tue 11:00 PM - 12:00 PM, Wednesday 10:00 PM - 12:00 PM"; // PASS | |
//var str = "Mon 6 am - 8 pm"; // PASS | |
//var str = "Mon-Fri 6 am - 8 pm"; // PASS | |
//var str = "Mon, Wed, Fri 9 pm - 12 pm"; // PASS | |
//var str = "Mon-Thu, Sun 11 am - 8 pm"; // PASS | |
//var str = "Monday 10:00 PM - 12:00 PM, Tuesday 11:00 PM - 11:30 PM, Wednesday 10:00 PM - 12:00 PM"; // PASS | |
//var str = "Mon-Fri 10am-10pm, Sat 10am-1am, Sun 9am-10am, some random text"; // PASS | |
//var str = "Mon-Fri 10am-10pm, don't break the days, Sat 10am-1am, Sun 9am-10am, some random text"; // PASS | |
//var str = "Mon-Fri 10am-10pm, !@#$%^&U* Sat 10am-1am, Sun 9am-10am, some random text"; // PASS | |
//var str = "mon 11:00am-12:00am, tue 11:00am-12:00am, wed 11:00am-02:00pm"; // PASS | |
//var str = "monday 11:00-21:00, tuesday 11:00-21:00, wednesday 11:00-21:00";// PASS | |
//var str = "mon 11:00am-8:00pm;tue 11:00am-8:30pm;wed 11:00am-8:30pm;thu 11:00am-8:30pm;"; // FAILED | |
var str = "monday-Thursday 10:00 PM - 11:00 PM, Tue 10:00 PM - 12:00 PM, Wednesday 10:00 PM - 12:00 PM"; // PASS | |
// Some useful variables. | |
var splitter = '$'; | |
var short_days = new Array('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'); | |
var long_days = new Array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'); | |
var open_name_days = {}; // Place to store business hours object. | |
// Make text all lower case and remove white space. | |
var str = str.toLowerCase().replace(/\s/g, ''); | |
// Match and replace any day abbreviations. Will match until non A-Z character. | |
var regex_days = /(mon|tue|wed|thu|fri|sat|sun).*?(?=[^a-z])/g; | |
var match; | |
while ((match = regex_days.exec(str)) !== null) { | |
var match_day = short_days.indexOf(match[1]); // Returns a regex short_day. | |
str = str.replace(match[0], long_days[match_day] + splitter); // Replace short_days with long_days in string. | |
} | |
// Replace any indicator for interval with + signs, which represent 'to'. Indicator will be assumed anything between start_day and end_day. | |
//str = str.replace(/-/g, '+'); | |
// Split days by characters | |
var days = str.split(/[,;]/); | |
console.log(days); | |
console.log(''); | |
// Loop through each day. | |
var len = days.length; | |
for (var i = 0; i < len; i++) { | |
if (!days[i]) continue; | |
var day = days[i].trim(); | |
console.log('Day: ' + day); | |
// Find the start and end day. Will match until not A-Z character. | |
var regex_day = /(monday|tuesday|wednesday|thursday|friday|saturday|sunday).*?(?![a-z])/g; | |
// Something broke, so continue onto next day. This is likely caused by random text not containing a day. | |
if (!day.match(regex_day)) console.log('Something broke with regex_day'); | |
if (!day.match(regex_day)) continue; | |
// Regex start_day and end_day from day. | |
var start_day = day.match(regex_day)[0]; | |
var end_day = day.match(regex_day)[1]; | |
end_day = ((end_day) ? end_day : start_day); | |
// Get indexes of start_day and end_day to be used later for days range. | |
var start_day_index = long_days.indexOf(start_day); | |
var end_day_index = long_days.indexOf(end_day); | |
console.log('start_day: [' + start_day_index + '] ' + start_day); | |
console.log('end_day: [' + end_day_index + '] ' + end_day); | |
// Detect times from day string. | |
var regex_time = /(\d\d:\d\d|\d{1,2})(am|pm)?/g; | |
// Regex time from this day string, fallback to string before split. | |
var time_match = day.match(regex_time); | |
// Something broke, this is likely caused by no time information. Attempt to retrieve it from string. | |
if (!time_match) { | |
time_match = str.match(regex_time); | |
if (!time_match) continue; // Unrecoverable at this point, continue onto next day. | |
} | |
var start_time = time_match[0]; | |
var end_time = time_match[1]; | |
// Parse time from Date.js. | |
start_time = new Date.parse(start_time).toString('h:mm tt'); | |
end_time = new Date.parse(end_time).toString('h:mm tt'); | |
console.log('start_time: ' + start_time); | |
console.log('end_time: ' + end_time); | |
console.log(''); | |
// Loop through days range and output to object. | |
var len = short_days.length; | |
for (var b = 0; b < len; b++) { | |
if ((b >= start_day_index) && (b <= end_day_index)) { | |
var open_day_name_hour = short_days[b] + "_open"; | |
var close_day_name_hour = short_days[b] + "_close"; | |
open_name_days[open_day_name_hour] = start_time; | |
open_name_days[close_day_name_hour] = end_time; | |
} | |
} | |
} | |
console.log(open_name_days); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment