-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathiso8601.min.js
1 lines (1 loc) · 1.64 KB
/
iso8601.min.js
1
(function(nezasa,undefined){if(!nezasa.iso8601)nezasa.iso8601={};if(!nezasa.iso8601.Period)nezasa.iso8601.Period={};nezasa.iso8601.version='0.1';nezasa.iso8601.Period.parse=function(period){return parsePeriodString(period)};nezasa.iso8601.Period.parseToTotalSeconds=function(period){var multiplicators=[31104000,2592000,86400,3600,60,1];var durationPerUnit=parsePeriodString(period);var durationInSeconds=0;for(var i=0;i<durationPerUnit.length;i++){durationInSeconds+=durationPerUnit[i]*multiplicators[i]}return durationInSeconds};nezasa.iso8601.Period.parseToString=function(period,unitNames,unitNamesPlural){var result=['','','','','',''];var durationPerUnit=parsePeriodString(period);if(!unitNames)unitNames=['year','month','day','hour','minute','second'];if(!unitNamesPlural)unitNamesPlural=['years','months','days','hours','minutes','seconds'];for(var i=0;i<durationPerUnit.length;i++){if(durationPerUnit[i]>0){if(durationPerUnit[i]==1)result[i]=durationPerUnit[i]+" "+unitNames[i];else result[i]=durationPerUnit[i]+" "+unitNamesPlural[i]}}return result.join(' ').trim().replace(/\ \ /g,' ')};function parsePeriodString(period){var valueIndexes=[2,3,4,6,7,8];var duration=[0,0,0,0,0,0];var struct;if(!period)return duration;else if(typeof period!=="string")throw new Error("Invalid iso8601 period string '"+period+"'");if(struct=/^P((\d+Y)?(\d+M)?(\d+D)?)?(T(\d+H)?(\d+M)?(\d+S)?)?$/.exec(period)){for(var i=0;i<valueIndexes.length;i++){var structIndex=valueIndexes[i];duration[i]=struct[structIndex]?+struct[structIndex].replace(/[A-Za-z]+/g,''):0}return duration}else{throw new Error("String '"+period+"' is not a valid ISO8601 period.")}}}(window.nezasa=window.nezasa||{}));