JSFiddle - React, Tailwind, and code Playground
by blesh
JavaScript
var HOUR = 3.6e10,
MIN = 60000,
SEC = 1000;
function TimeSpan(h, m, s, ms) {
if (arguments.length === 1) {
ms = arguments[0];
h = m = s = 0;
} else {
m = m || 0;
s = s || 0;
ms = ms || 0;
}
var self = this,
_value = (h * HOUR) + (m * MIN) + (s * SEC) + ms;
//update h, m, s:
h = ~~(_value / HOUR);
m = ~~((_value % HOUR) / MIN);
s = ~~((_value % MIN) / SEC);
ms = _value % SEC;
self.hours = function () {
return h;
};
self.minutes = function () {
return m;
};
self.seconds = function (){
return s;
};
self.milliseconds = function (){
return ms;
};
self.valueOf = function (){
return _value;
};
self.toString = function (){
return pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + '.' + pad(ms, 3);
};
self.add = function(ts) {
return new TimeSpan(self + ts);
};
self.addSeconds = function(m) {
return self.add(m * SEC);
};
self.addHours = function(h) {
return self.add(m * HOUR);
};
self.addMinutes = function(m) {
return self.add(m * MIN);
};
function pad(n, size) {
n = ''+n;
while(n.length < size) {
n = '0' + n;
}
return n;
}
};
console.clear();
var ts = new TimeSpan(1, 2, 3, 4);
var ts2 = new TimeSpan(1, 2, 3, 4);
var ts3 = ts.addMinutes(2);
console.log(ts3.toString());