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.

34 lines (33 loc) 1.06 kB
import { isBigInt, isDate, isNumber } from "@storm-stack/types"; import { RFC_3339_DATE_REGEX } from "../constants.mjs"; import { StormDateTime } from "../storm-date-time.mjs"; import { isDateTime } from "./is-date-time.mjs"; import { isInstant } from "./is-instant.mjs"; import { validateDayOfMonth } from "./validate-day-of-month.mjs"; export function validateDate(value, options) { if (isDateTime(value)) { return value.valid; } if (isInstant(value)) { return Boolean(value.epochMilliseconds); } let datetime; if (isDate(value) || isNumber(value) || isBigInt(value)) { const date = isNumber(value) || 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 (!RFC_3339_DATE_REGEX.test(datetime)) { return false; } return validateDayOfMonth(StormDateTime.create(value, options)) === null; }