Skip to content

clampDate

Clamps a date to a [min, max] range.

Returns a new Date — the original is never mutated. Returns null if any of the inputs is invalid.

Available since v2.0.0

import { clampDate } from '@helpers4/date';
// or, from the all-in-one package (same code, one install):
import { clampDate } from 'helpers4/date';
clampDate(date: DateLike, min: DateLike, max: DateLike): Date | null
ParameterTypeDescription
dateDateLikeThe date to clamp
minDateLikeThe minimum allowed date
maxDateLikeThe maximum allowed date

Date | null — A new Date clamped to the range, or null if any input is invalid

clampDate('2025-06-15', '2025-01-01', '2025-03-31')
// => Date(2025-03-31) — clamped to max

clampDate('2025-02-15', '2025-01-01', '2025-03-31')
// => Date(2025-02-15) — within range, unchanged

A date range represented as a pair of date-like values.

interface DateRange {
  end: DateLike;
  start: DateLike;
}

A value that can be converted to a Date.

  • Date — used as-is (validated for Invalid Date)
  • number — treated as a timestamp (seconds or milliseconds, auto-detected); 0 is treated as invalid and produces null in ensureDate
  • string — parsed via new Date(string)
  • Temporal.Instant | Temporal.ZonedDateTime — read via their epochMilliseconds property
type DateLike = Date | number | string | Temporal.Instant | Temporal.ZonedDateTime

View source on GitHub