postgrejs
Version:
Professional PostgreSQL client NodeJS
31 lines (30 loc) • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TIME_PATTERN = exports.STRICT_TIME_PATTERN = void 0;
exports.parseTime = parseTime;
const fast_parseint_js_1 = require("./fast-parseint.js");
// noinspection RegExpUnnecessaryNonCapturingGroup
exports.STRICT_TIME_PATTERN = /^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(?:\.(\d+))?(?:(Z)|(?:([+-])([01]?[0-9]|2[0-3]):?([0-5][0-9])?))?$/;
// noinspection RegExpUnnecessaryNonCapturingGroup
exports.TIME_PATTERN = /^([01][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?(?:\.(\d+))?(?:(Z)|(?:([+-])([01]?[0-9]|2[0-3]):?([0-5][0-9])?))?$/;
function parseTime(str, parseTimeZone, utc) {
const m = str.match(exports.TIME_PATTERN);
if (!m)
return new Date('invalid');
const args = [
1970, 0, 1, 0, 0, 0, 0,
];
for (let i = 1; i < 4; i++) {
const s = m[i];
args[i + 2] = (0, fast_parseint_js_1.fastParseInt)(s) || 0;
}
if (parseTimeZone && m[6]) {
const r = m[9] === '-' ? -1 : 1;
args[3] -= ((0, fast_parseint_js_1.fastParseInt)(m[7]) || 0) * r;
args[4] -= ((0, fast_parseint_js_1.fastParseInt)(m[8]) || 0) * r;
return new Date(Date.UTC(...args));
}
if (m[5] || utc)
return new Date(Date.UTC(...args));
return new Date(...args);
}