UNPKG

celery-node

Version:
40 lines (39 loc) 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseISO8601 = void 0; // https://gist.github.com/dimkalinux/1478408 const ISO8601_REGEX = /^(\d{4})-(\d\d)-(\d\d)([T ](\d\d):(\d\d):(\d\d)(\.\d+)?(Z|([+-])(\d\d)(:(\d\d))?)?)?$/; function parseISO8601(dateString) { // 0 = whole string // 1 = year // 2 = month // 3 = day // 4 = whole time part // 5 = hour // 6 = minute // 7 = second // 8 = fractional (with dot) // 9 = whole timezone (possibly Z) // 10 = offset sign (+ or -) // 11 = offset hours // 12 = offset minutes (with colon) // 13 = offset minutes const r = ISO8601_REGEX.exec(dateString); if (!r) return Date.parse(dateString); const year = Number(r[1]); const month = Number(r[2]) - 1; const day = Number(r[3]); if (!r[4]) return Date.UTC(year, month, day); const hour = Number(r[5]); const minute = Number(r[6]); const second = Number(r[7]); const ms = r[8] ? Number((r[8] + "000").substr(1, 3)) : 0; if (!r[9]) return Date.UTC(year, month, day, hour, minute, second, ms); const oh = r[11] ? Number(r[10]) + Number(r[11]) : 0; const om = r[13] ? Number(r[10]) + Number(r[13]) : 0; return Date.UTC(year, month, day, hour - oh, minute - om, second, ms); } exports.parseISO8601 = parseISO8601;