@configurator/ravendb
Version:
RavenDB client for Node.js
55 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DateUtil = void 0;
const moment = require("moment");
const Exceptions_1 = require("../Exceptions");
class DateUtil {
constructor(opts) {
this.opts = opts;
}
static timestamp() {
return moment().unix();
}
static timestampMs() {
return moment().valueOf();
}
static zeroDate() {
return moment([1, 1, 1]).toDate();
}
parse(dateString) {
if (!dateString) {
return null;
}
let parsed;
if (this.opts.useUtcDates || this.opts.withTimezone || dateString.endsWith("Z")) {
parsed = moment.parseZone(dateString, DateUtil.DEFAULT_DATE_TZ_FORMAT);
}
else {
parsed = moment(dateString, DateUtil.DEFAULT_DATE_FORMAT);
}
if (!parsed.isValid()) {
(0, Exceptions_1.throwError)("InvalidArgumentException", `Could not parse date string '${dateString}'.`);
}
return parsed.toDate();
}
stringify(date) {
const m = moment(date);
if (this.opts.useUtcDates) {
m.utc();
}
const format = this.opts.withTimezone
? DateUtil.DEFAULT_DATE_TZ_FORMAT
: DateUtil.DEFAULT_DATE_FORMAT;
const result = m.format(format);
if (this.opts.useUtcDates && !this.opts.withTimezone) {
return result + "Z";
}
return result;
}
}
exports.DateUtil = DateUtil;
DateUtil.DEFAULT_DATE_FORMAT = "YYYY-MM-DDTHH:mm:ss.SSS0000";
DateUtil.DEFAULT_DATE_TZ_FORMAT = "YYYY-MM-DDTHH:mm:ss.SSS0000Z";
DateUtil.default = new DateUtil({});
DateUtil.utc = new DateUtil({ useUtcDates: true });
//# sourceMappingURL=DateUtil.js.map