2017-11-03 02:09:34 +02:00
|
|
|
const moment = require('moment');
|
2017-06-23 23:32:24 +02:00
|
|
|
|
2017-11-28 20:02:54 +02:00
|
|
|
class Time {
|
|
|
|
constructor() {
|
|
|
|
this.dateFormat_ = 'DD/MM/YYYY';
|
|
|
|
this.timeFormat_ = 'HH:mm';
|
2019-08-29 18:38:24 +02:00
|
|
|
this.locale_ = 'en-us';
|
|
|
|
}
|
|
|
|
|
|
|
|
locale() {
|
|
|
|
return this.locale_;
|
|
|
|
}
|
|
|
|
|
|
|
|
setLocale(v) {
|
|
|
|
moment.locale(v);
|
2019-09-08 18:16:45 +02:00
|
|
|
this.locale_ = v;
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
dateFormat() {
|
|
|
|
return this.dateFormat_;
|
|
|
|
}
|
|
|
|
|
|
|
|
setDateFormat(v) {
|
|
|
|
this.dateFormat_ = v;
|
|
|
|
}
|
|
|
|
|
|
|
|
timeFormat() {
|
|
|
|
return this.timeFormat_;
|
|
|
|
}
|
|
|
|
|
|
|
|
setTimeFormat(v) {
|
|
|
|
this.timeFormat_ = v;
|
|
|
|
}
|
|
|
|
|
|
|
|
dateTimeFormat() {
|
2019-09-19 23:51:18 +02:00
|
|
|
return `${this.dateFormat()} ${this.timeFormat()}`;
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-06-14 00:39:45 +02:00
|
|
|
|
|
|
|
unix() {
|
2017-11-28 00:50:46 +02:00
|
|
|
return Math.floor(Date.now() / 1000);
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-06-19 00:06:10 +02:00
|
|
|
|
|
|
|
unixMs() {
|
2017-11-28 00:50:46 +02:00
|
|
|
return Date.now();
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-06-19 00:06:10 +02:00
|
|
|
|
2017-09-10 18:56:27 +02:00
|
|
|
unixMsToObject(ms) {
|
|
|
|
return new Date(ms);
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-09-10 18:56:27 +02:00
|
|
|
|
2017-06-19 00:06:10 +02:00
|
|
|
unixMsToS(ms) {
|
2017-06-19 21:18:22 +02:00
|
|
|
return Math.floor(ms / 1000);
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-06-23 23:32:24 +02:00
|
|
|
|
|
|
|
unixMsToIso(ms) {
|
2019-07-29 15:43:53 +02:00
|
|
|
return (
|
2019-09-19 23:51:18 +02:00
|
|
|
`${moment
|
2019-07-29 15:43:53 +02:00
|
|
|
.unix(ms / 1000)
|
|
|
|
.utc()
|
2019-09-19 23:51:18 +02:00
|
|
|
.format('YYYY-MM-DDTHH:mm:ss.SSS')}Z`
|
2019-07-29 15:43:53 +02:00
|
|
|
);
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-06-14 00:39:45 +02:00
|
|
|
|
2017-07-07 19:19:24 +02:00
|
|
|
unixMsToIsoSec(ms) {
|
2019-07-29 15:43:53 +02:00
|
|
|
return (
|
2019-09-19 23:51:18 +02:00
|
|
|
`${moment
|
2019-07-29 15:43:53 +02:00
|
|
|
.unix(ms / 1000)
|
|
|
|
.utc()
|
2019-09-19 23:51:18 +02:00
|
|
|
.format('YYYY-MM-DDTHH:mm:ss')}Z`
|
2019-07-29 15:43:53 +02:00
|
|
|
);
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-07-07 19:19:24 +02:00
|
|
|
|
2017-07-12 22:39:47 +02:00
|
|
|
unixMsToLocalDateTime(ms) {
|
|
|
|
return moment.unix(ms / 1000).format('DD/MM/YYYY HH:mm');
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-07-12 22:39:47 +02:00
|
|
|
|
2019-09-25 20:58:15 +02:00
|
|
|
unixMsToLocalHms(ms) {
|
|
|
|
return moment.unix(ms / 1000).format('HH:mm:ss');
|
|
|
|
}
|
|
|
|
|
2017-11-28 22:31:14 +02:00
|
|
|
formatMsToLocal(ms, format = null) {
|
|
|
|
if (format === null) format = this.dateTimeFormat();
|
2017-07-15 01:12:32 +02:00
|
|
|
return moment(ms).format(format);
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-07-13 20:47:31 +02:00
|
|
|
|
2018-09-16 20:37:31 +02:00
|
|
|
formatLocalToMs(localDateTime, format = null) {
|
|
|
|
if (format === null) format = this.dateTimeFormat();
|
|
|
|
const m = moment(localDateTime, format);
|
|
|
|
if (m.isValid()) return m.toDate().getTime();
|
2019-09-19 23:51:18 +02:00
|
|
|
throw new Error(`Invalid input for formatLocalToMs: ${localDateTime}`);
|
2018-09-16 20:37:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Mostly used as a utility function for the DateTime Electron component
|
|
|
|
anythingToDateTime(o, defaultValue = null) {
|
|
|
|
if (o && o.toDate) return o.toDate();
|
|
|
|
if (!o) return defaultValue;
|
|
|
|
let m = moment(o, time.dateTimeFormat());
|
|
|
|
if (m.isValid()) return m.toDate();
|
|
|
|
m = moment(o, time.dateFormat());
|
|
|
|
return m.isValid() ? m.toDate() : defaultValue;
|
|
|
|
}
|
|
|
|
|
2017-06-27 01:20:01 +02:00
|
|
|
msleep(ms) {
|
2019-09-13 00:16:42 +02:00
|
|
|
return new Promise((resolve) => {
|
2017-06-27 01:20:01 +02:00
|
|
|
setTimeout(() => {
|
|
|
|
resolve();
|
|
|
|
}, ms);
|
|
|
|
});
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-06-27 01:20:01 +02:00
|
|
|
|
|
|
|
sleep(seconds) {
|
|
|
|
return this.msleep(seconds * 1000);
|
2017-11-28 20:02:54 +02:00
|
|
|
}
|
2017-06-14 00:39:45 +02:00
|
|
|
}
|
|
|
|
|
2017-11-28 20:02:54 +02:00
|
|
|
const time = new Time();
|
|
|
|
|
2019-07-29 15:43:53 +02:00
|
|
|
module.exports = { time };
|