UNPKG

ok-tools

Version:

My personal JS tools and utilities

81 lines 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseTime = void 0; function parseTime(input, returnNullOnInvalid) { if (returnNullOnInvalid === void 0) { returnNullOnInvalid = true; } var date = new Date(); if (typeof input === 'string') { var number = parseInt(input, 10); if (!isNaN(number) && (number + '') === input) { input = number; } } switch (typeof input) { case 'object': if (input instanceof Date) { date = input; break; } if (input.day && input.month && input.year) { date.setUTCFullYear(input.year, input.month - 1, input.day); date.setHours(0, 0, 0, 0); date.setTime(date.getTime() - date.getTimezoneOffset() * 1000 * 60); break; } if (returnNullOnInvalid) { return null; } throw new Error('Given input must be a Date, parsable string or a number timestamp.'); case 'string': var stringInput = input; var alreadyCreatedDate = false; // mysql format var match = (stringInput).trim().match(/^(\d{4})-(\d{2})-(\d{2})([\sT]+(\d{2}):(\d{2}):(\d{2}))?$/); if (match) { stringInput = match[2] + '/' + match[3] + '/' + match[1]; if (match[4]) { stringInput += ' ' + match[5] + ':' + match[6] + ':' + match[7]; } } // czech human format var matchHuman = (stringInput).trim().match(/^(\d{1,2})\.\s?(\d{1,2})\.\s?(\d{2,4})(\s+(\d{2})[:.](\d{2})([:.](\d{2}))?)?$/); if (matchHuman) { alreadyCreatedDate = true; date = new Date(parseInt(matchHuman[3]), parseInt(matchHuman[2]) - 1, parseInt(matchHuman[1]), parseInt(matchHuman[5]) || 12, parseInt(matchHuman[6]) || 0, parseInt(matchHuman[8]) || 0); } if (!alreadyCreatedDate) { date = new Date(stringInput); } if (!date.getTime() || isNaN(date.getTime())) { if (returnNullOnInvalid) { return null; } throw new Error('Given input could not be parsed into a Date: ' + stringInput); } break; case 'number': var fixedInput = void 0; if (input < 2000000000) { fixedInput = input * 1000; } else { fixedInput = input; } date = new Date(fixedInput); if (!date.getTime() || isNaN(date.getTime())) { if (returnNullOnInvalid) { return null; } throw new Error('Given input could not be parsed into a Date: ' + input); } } if (!date.getTime() || isNaN(date.getTime())) { if (returnNullOnInvalid) { return null; } throw new Error('Given input could not be parsed into a Date.'); } return date; } exports.parseTime = parseTime; //# sourceMappingURL=parse-time.js.map