83 lines
3.0 KiB
JavaScript
83 lines
3.0 KiB
JavaScript
const { padNumber, parseDate, formatDate } = require('../core/util');
|
|
|
|
module.exports = {
|
|
|
|
formatDate: function(date, format, utc) {
|
|
date = parseDate(date);
|
|
if (date == null) return date;
|
|
|
|
return formatDate(date, format, utc);
|
|
},
|
|
|
|
dateAdd: function(date, interval, num) {
|
|
date = parseDate(date);
|
|
if (date == null) return date;
|
|
|
|
switch (interval) {
|
|
case 'years': date.setFullYear(date.getFullYear() + num); break;
|
|
case 'months': date.setMonth(date.getMonth() + num); break;
|
|
case 'weeks': date.setDate(date.getDate() + (num * 7)); break;
|
|
case 'days': date.setDate(date.getDate() + num); break;
|
|
case 'hours': date.setHours(date.getHours() + num); break;
|
|
case 'minutes': date.setMinutes(date.getMinutes() + num); break;
|
|
case 'seconds': date.setSeconds(date.getSeconds() + num); break;
|
|
}
|
|
|
|
return date.toISOString();
|
|
},
|
|
|
|
dateDiff: function(date, interval, date2) {
|
|
date = parseDate(date);
|
|
date2 = parseDate(date2);
|
|
|
|
let diff = Math.abs(date2 - date);
|
|
|
|
if (isNaN(diff) || date == null || date2 == null) return undefined;
|
|
|
|
let s = 1000, m = s * 60, h = m * 60, d = h * 24, w = d * 7;
|
|
|
|
switch (interval) {
|
|
case 'years': return Math.abs(date2.getFullYear() - date.getFullYear());
|
|
case 'months': return Math.abs((date2.getFullYear() * 12 + date2.getMonth()) - (date.getFullYear() * 12 + date.getMonth()));
|
|
case 'weeks': return Math.floor(diff / w);
|
|
case 'days': return Math.floor(diff / d);
|
|
case 'hours': return Math.floor(diff/ h);
|
|
case 'minutes': return Math.floor(diff / m);
|
|
case 'seconds': return Math.floor(diff / s);
|
|
case 'hours:minutes':
|
|
h = Math.floor(diff / h);
|
|
m = Math.floor(diff / m);
|
|
return padNumber(h, 2) + ':' + padNumber(m - (h * 60), 2);
|
|
case 'minutes:seconds':
|
|
m = Math.floor(diff / m);
|
|
s = Math.floor(diff / s);
|
|
return padNumber(m, 2) + ':' + padNumber(s - (m * 60), 2);
|
|
case 'hours:minutes:seconds':
|
|
h = Math.floor(diff / h);
|
|
m = Math.floor(diff / m);
|
|
s = Math.floor(diff / s);
|
|
return padNumber(h, 2) + ':' + padNumber(m - (h * 60), 2) + ':' + padNumber(s - m * 60, 2);
|
|
}
|
|
|
|
return undefined;
|
|
},
|
|
|
|
toTimestamp: function(date) {
|
|
date = parseDate(date);
|
|
if (date == null) return date;
|
|
return Math.floor(date.getTime() / 1000);
|
|
},
|
|
|
|
toLocalTime: function(date) {
|
|
date = parseDate(date);
|
|
if (date == null) return date;
|
|
return formatDate(date, 'yyyy-MM-dd HH:mm:ss.v');
|
|
},
|
|
|
|
toUTCTime: function(date) {
|
|
date = parseDate(date);
|
|
if (date == null) return date;
|
|
return date.toISOString();
|
|
},
|
|
|
|
}; |