Validation
GMT’s public functions never throw on invalid input — they return a sentinel. But when you need to reject invalid input at a system boundary (a form, an API parameter, a config file), use these validators to check first.
Scalar validation
Section titled “Scalar validation”import { isValidDate, isValidTime, isValidDateTime } from "@northguild/gmt";
isValidDate("2024-03-15"); // trueisValidDate("2024-02-30"); // false — invalid dayisValidTime("14:30:45"); // trueisValidTime("25:00:00"); // false — invalid hourisValidDateTime("2024-03-15T14:30:45"); // trueTimezone and zoned-datetime validation
Section titled “Timezone and zoned-datetime validation”import { isValidTimeZone, isValidZonedDateTime } from "@northguild/gmt/zoned";
isValidTimeZone("America/New_York"); // trueisValidTimeZone("Invalid/Zone"); // false
isValidZonedDateTime("2024-03-15T14:30:45[America/New_York]"); // trueisValidZonedDateTime("2024-02-30T14:30:45[America/New_York]"); // falseDaylight saving time
Section titled “Daylight saving time”import { hasDaylightSaving, getDstTransitions } from "@northguild/gmt/zoned";
hasDaylightSaving("America/New_York"); // truehasDaylightSaving("Asia/Tokyo"); // false
getDstTransitions("America/New_York", 2024);// [// { instant: "2024-03-10T07:00:00Z", offsetBefore: "-05:00", offsetAfter: "-04:00" },// { instant: "2024-11-03T06:00:00Z", offsetBefore: "-04:00", offsetAfter: "-05:00" }// ]
getDstTransitions("Asia/Tokyo", 2024); // [] — no transitionsDuration-unit validation
Section titled “Duration-unit validation”import { isValidDateUnit, isValidTimeUnit } from "@northguild/gmt";
isValidDateUnit("day"); // trueisValidTimeUnit("hour"); // trueisValidDateUnit("invalid"); // falseInterval validation (positional args, start ≤ end)
Section titled “Interval validation (positional args, start ≤ end)”import { isValidDateInterval, isValidTimeInterval, isValidDateTimeInterval,} from "@northguild/gmt";
isValidDateInterval("2024-01-01", "2024-12-31"); // trueisValidDateInterval("2024-12-31", "2024-01-01"); // false — start > endisValidTimeInterval("09:00:00", "17:00:00"); // trueisValidDateTimeInterval("2024-01-01T10:00:00", "2024-12-31T23:59:59"); // trueThere are isValidUtcInterval, isValidUnixInterval, and isValidZonedInterval
siblings. All return false on invalid input.
Range validation (object params)
Section titled “Range validation (object params)”Range validators take { value1, value2, options? } — a different shape from the
interval validators above:
import { isValidDateRange, isValidZonedRange } from "@northguild/gmt";
isValidDateRange({ value1: "2024-01-01", value2: "2024-12-31" }); // trueisValidZonedRange({ value1: "2024-01-01T10:00:00+00:00[UTC]", value2: "2024-12-31T23:59:59+00:00[UTC]",}); // trueDon’t confuse the two: isValidDateInterval takes positional (start, end) args;
isValidDateRange takes an object { value1, value2 }.
See also
Section titled “See also”- Parsing — extracting components from validated strings
- Intervals — containment, overlap, and set operations on validated ranges
isValidDatereferenceisValidTimeZonereferencehasDaylightSavingreference