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.

37 lines (36 loc) 1.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateDate = validateDate; var _types = require("@storm-stack/types"); var _constants = require("../constants.cjs"); var _stormDateTime = require("../storm-date-time.cjs"); var _isDateTime = require("./is-date-time.cjs"); var _isInstant = require("./is-instant.cjs"); var _validateDayOfMonth = require("./validate-day-of-month.cjs"); function validateDate(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_REGEX.test(datetime)) { return false; } return (0, _validateDayOfMonth.validateDayOfMonth)(_stormDateTime.StormDateTime.create(value, options)) === null; }