76 lines
2.6 KiB
JavaScript
76 lines
2.6 KiB
JavaScript
/**
|
|
* @preserve date-and-time.js plugin
|
|
* @preserve timespan
|
|
*/
|
|
|
|
var plugin = function (date) {
|
|
var timeSpan = function (date1, date2) {
|
|
var milliseconds = function (dt, time) {
|
|
dt.S = time;
|
|
return dt;
|
|
},
|
|
seconds = function (dt, time) {
|
|
dt.s = time / 1000 | 0;
|
|
return milliseconds(dt, Math.abs(time) % 1000);
|
|
},
|
|
minutes = function (dt, time) {
|
|
dt.m = time / 60000 | 0;
|
|
return seconds(dt, Math.abs(time) % 60000);
|
|
},
|
|
hours = function (dt, time) {
|
|
dt.H = time / 3600000 | 0;
|
|
return minutes(dt, Math.abs(time) % 3600000);
|
|
},
|
|
days = function (dt, time) {
|
|
dt.D = time / 86400000 | 0;
|
|
return hours(dt, Math.abs(time) % 86400000);
|
|
},
|
|
format = function (dt, formatString) {
|
|
var pattern = date.compile(formatString);
|
|
var str = '';
|
|
|
|
for (var i = 1, len = pattern.length, token, value; i < len; i++) {
|
|
token = pattern[i].charAt(0);
|
|
if (token in dt) {
|
|
value = '' + Math.abs(dt[token]);
|
|
while (value.length < pattern[i].length) {
|
|
value = '0' + value;
|
|
}
|
|
if (dt[token] < 0) {
|
|
value = '-' + value;
|
|
}
|
|
str += value;
|
|
} else {
|
|
str += pattern[i].replace(/\[(.*)]/, '$1');
|
|
}
|
|
}
|
|
return str;
|
|
},
|
|
delta = date1.getTime() - date2.getTime();
|
|
|
|
return {
|
|
toMilliseconds: function (formatString) {
|
|
return format(milliseconds({}, delta), formatString);
|
|
},
|
|
toSeconds: function (formatString) {
|
|
return format(seconds({}, delta), formatString);
|
|
},
|
|
toMinutes: function (formatString) {
|
|
return format(minutes({}, delta), formatString);
|
|
},
|
|
toHours: function (formatString) {
|
|
return format(hours({}, delta), formatString);
|
|
},
|
|
toDays: function (formatString) {
|
|
return format(days({}, delta), formatString);
|
|
}
|
|
};
|
|
};
|
|
var name = 'timespan';
|
|
|
|
date.plugin(name, { extender: { timeSpan: timeSpan } });
|
|
return name;
|
|
};
|
|
|
|
export { plugin as default };
|