1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-21 09:38:01 +02:00
joplin/ReactNativeClient/lib/time-utils.js

131 lines
2.4 KiB
JavaScript
Raw Normal View History

const moment = require('moment');
const shim = require('lib/shim').default;
2017-06-23 23:32:24 +02:00
class Time {
constructor() {
this.dateFormat_ = 'DD/MM/YYYY';
this.timeFormat_ = 'HH:mm';
this.locale_ = 'en-us';
}
locale() {
return this.locale_;
}
setLocale(v) {
moment.locale(v);
this.locale_ = v;
}
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-06-14 00:39:45 +02:00
unix() {
return Math.floor(Date.now() / 1000);
}
2017-06-19 00:06:10 +02:00
unixMs() {
return Date.now();
}
2017-06-19 00:06:10 +02:00
2017-09-10 18:56:27 +02:00
unixMsToObject(ms) {
return new Date(ms);
}
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-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-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-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-07-12 22:39:47 +02:00
unixMsToLocalHms(ms) {
return moment.unix(ms / 1000).format('HH:mm:ss');
}
formatMsToLocal(ms, format = null) {
if (format === null) format = this.dateTimeFormat();
2017-07-15 01:12:32 +02:00
return moment(ms).format(format);
}
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}`);
}
// 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) {
return new Promise((resolve) => {
shim.setTimeout(() => {
2017-06-27 01:20:01 +02:00
resolve();
}, ms);
});
}
2017-06-27 01:20:01 +02:00
sleep(seconds) {
return this.msleep(seconds * 1000);
}
goBackInTime(startDate, n, period) {
// period is a string (eg. "day", "week", "month", "year" ), n is an integer
return moment(startDate).startOf(period).subtract(n, period).format('x');
}
goForwardInTime(startDate, n, period) {
return moment(startDate).startOf(period).add(n, period).format('x');
}
2017-06-14 00:39:45 +02:00
}
const time = new Time();
2019-07-29 15:43:53 +02:00
module.exports = { time };