ok-tools
Version:
My personal JS tools and utilities
81 lines • 3.23 kB
JavaScript
;
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