UNPKG

@storm-stack/date-time

Version:

This package includes a DateTime class, various utility functions for working with dates and times, and a number of formatting options.

40 lines (39 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateDateTime = validateDateTime; var _types = require("@storm-stack/types"); var _constants = require("../constants.cjs"); var _isDateTime = require("./is-date-time.cjs"); var _isInstant = require("./is-instant.cjs"); var _validateDate = require("./validate-date.cjs"); var _validateTime = require("./validate-time.cjs"); function validateDateTime(value, options) { if ((0, _isDateTime.isDateTime)(value)) { return value.valid; } if ((0, _isInstant.isInstant)(value)) { return Boolean(value.epochMilliseconds); } let datetime; if ((0, _types.isDate)(value) || (0, _types.isNumber)(value) || (0, _types.isBigInt)(value)) { const date = (0, _types.isNumber)(value) || (0, _types.isBigInt)(value) ? new Date(Number(value)) : value; if (Number.isNaN(date.getTime())) { return false; } datetime = date.toUTCString(); } else { datetime = value === null || value === void 0 ? void 0 : value.toUpperCase(); } if (!datetime) { return false; } if (!_constants.RFC_3339_DATE_TIME_REGEX.test(datetime)) { return false; } if (!Date.parse(datetime)) { return false; } return Boolean((0, _validateDate.validateDate)(datetime.slice(0, Math.max(0, datetime.indexOf("T"))), options) && (0, _validateTime.validateTime)(datetime.slice(Math.max(0, datetime.indexOf("T") + 1)), options)); }