geoview-core - v2.2.0
    Preparing search index...

    Class DateMgtAbstract

    Class used to handle date as ISO 8601.

    Index

    Constructors

    Properties

    DEFAULT_DATE_FORMAT: TypeDisplayDateFormat = DateMgt.LONG_DISPLAY_DATE_FORMAT

    The default date format for English and French to be used by the application.

    DEFAULT_DATE_YEAR_ONLY_FORMAT: TypeDisplayDateFormat = DateMgt.ISO_DISPLAY_YEAR_ONLY_FORMAT

    The default year-only format for English and French to be used by the application.

    DEFAULT_DATETIME_FORMAT: TypeDisplayDateFormat = DateMgt.LONG_DISPLAY_DATETIME_FORMAT

    The default date and time format for English and French to be used by the application.

    DEFAULT_TEMPORAL_MODE: TemporalMode = 'calendar'

    The default temporal mode to be used by the application.

    DEFAULT_TIME_FORMAT: TypeDisplayDateFormat = DateMgt.ISO_DISPLAY_TIME_FORMAT_MINUTES

    The default time format for English and French to be used by the application.

    ISO_DATE_FORMAT: "YYYY-MM-DD" = 'YYYY-MM-DD'

    The international ISO date format.

    ISO_DATETIME_FORMAT_FULL: "YYYY-MM-DDTHH:mm:ss.SSS" = 'YYYY-MM-DDTHH:mm:ss.SSS'

    The international ISO datetime format.

    ISO_DATETIME_FORMAT_MINUTES: "YYYY-MM-DDTHH:mm" = 'YYYY-MM-DDTHH:mm'

    The international ISO format without the seconds.

    ISO_DATETIME_FORMAT_SECONDS: "YYYY-MM-DDTHH:mm:ss" = 'YYYY-MM-DDTHH:mm:ss'

    The international ISO format without the milliseconds.

    ISO_DISPLAY_DATE_FORMAT: TypeDisplayDateFormat = ...

    The display format for international ISO date only for English and French.

    ISO_DISPLAY_DATETIME_FORMAT_MINUTES: TypeDisplayDateFormat = ...

    A default datetime format for English and French.

    ISO_DISPLAY_TIME_FORMAT_MINUTES: TypeDisplayDateFormat = ...

    A default time-only format for English and French.

    ISO_DISPLAY_YEAR_ONLY_FORMAT: TypeDisplayDateFormat = ...

    A default year-only format for English and French.

    ISO_TIME_FORMAT: "HH:mm:ss" = 'HH:mm:ss'

    The international ISO time format with seconds.

    ISO_TIME_FORMAT_MINUTES: "HH:mm" = 'HH:mm'

    The international ISO time format.

    LONG_DISPLAY_DATE_FORMAT: { en: string; fr: string } = ...

    The Long date format.

    LONG_DISPLAY_DATETIME_FORMAT: { en: string; fr: string } = ...

    The Long datetime format.

    MILLISECONDS_IN_1_DAY: number = ...

    The milliseconds for 1 day.

    MILLISECONDS_IN_1_YEAR: number = ...

    The milliseconds for 1 year (estimation, not considering leap years).

    REGEX_ISO_DATE: RegExp = ...

    Regular expression for matching ISO date strings.

    REGEX_ISO_DATE_WITH_PREFIX: RegExp = ...

    Regular expression for matching ISO date strings with a 'date' prefix.

    TIME_IANA_LOCAL: string = ...

    Static constant indicating the local IANA time zone.

    TIME_UTC: "UTC" = 'UTC'

    Static constant to indicate when we interpret a date as UTC. For general purposes of UTC.

    Methods

    • Convert a date to milliseconds.

      Parameters

      • date: DateLike

        The date to use

      • OptionalinputFormat: string | string[]

        Optional, one or more format strings to prioritize when parsing string inputs

      • OptionalinputTimezone: string

        Optional timezone to assume for string inputs that do not explicitly include a timezone

      Returns number

      Date as milliseconds

      When the time zone is not a valid or supported IANA identifier

    • Creates a native Date object from a DateLike input.

      This is a convenience wrapper around createDayjs that converts the validated Dayjs instance into a native JavaScript Date.

      Parsing, validation, and temporal logic are delegated to createDayjs. The returned Date represents the same instant in time as the underlying Dayjs object.

      Parameters

      • date: DateLike

        The input date to convert. Can be:

        • A Date object
        • A timestamp number
        • A string (ISO, custom format, or calendar/instant date)
      • OptionalinputFormat: string | string[]

        Optional format(s) for parsing string inputs. Passed directly to createDayjs

      • OptionalinputTimezone: string

        Optional IANA timezone to apply if the input string has no explicit timezone and is parsed as an instant

      • OptionaltemporalMode: TemporalMode

        Optional, determines how string inputs are interpreted:

        • "calendar": parsed as a calendar date
        • "instant": parsed as an exact point in time
        • Defaults to DEFAULT_TEMPORAL_MODE

      Returns Date

      A native JavaScript Date object representing the parsed date

      When the input cannot be parsed into a valid date

    • Creates a validated Dayjs instance from a DateLike input.

      This is a thin wrapper around parseDateToDayjs that ensures the resulting Dayjs object is valid, throwing an error if parsing fails. This method guarantees that the returned Dayjs instance is valid. All parsing rules, timezone handling, and temporal logic are delegated to parseDateToDayjs.

      Parameters

      • date: DateLike

        The input date to parse. Can be:

        • A Date object
        • A timestamp number
        • A string (ISO, custom format, or calendar/instant date)
      • OptionalinputFormat: string | string[]

        Optional format(s) for parsing string inputs. Passed directly to parseDateToDayjs

      • OptionalinputTimezone: string

        Optional IANA timezone to apply if the input string has no explicit timezone and is parsed as an instant

      • OptionaltemporalMode: TemporalMode

        Optional, determines how string inputs are interpreted:

        • "calendar": parsed as a calendar date
        • "instant": parsed as an exact point in time
        • Defaults to DEFAULT_TEMPORAL_MODE

      Returns Dayjs

      A valid Dayjs object representing the parsed date

      When input has invalid date

    • Create the Geoview time dimension from ESRI dimension.

      Parameters

      • timeDimensionESRI: TimeDimensionESRI

        Esri time dimension object

      • displayDateMode: DisplayDateMode | undefined

        Optional display date mode

      • singleHandle: boolean = false

        Optional, true if it is ESRI Image

      Returns TimeDimension

      The Geoview time dimension

      When range couldn't be computed, or when duration is invalid, or non-positive or when an infinite loop is detected

      When input has invalid dates

    • Create the Geoview time dimension from OGC dimension.

      Parameters

      • ogcTimeDimension: string | TypeMetadataWMSCapabilityLayerDimension

        The OGC time dimension object or string

      • displayDateMode: DisplayDateMode | undefined

        Optional display date mode

      Returns TimeDimension

      The Geoview time dimension

      When range couldn't be computed, or when duration is invalid, or non-positive or when an infinite loop is detected

      When input has invalid dates

    • Create a range of date object from OGC time dimension following ISO 8601.

      Parameters

      • ogcTimeDimensionValues: string

        OGC time dimension values

      Returns RangeItems

      Array of date from the dimension

      When range couldn't be computed, or when duration is invalid, or non-positive or when an infinite loop is detected

      When input has invalid dates

    • Formats a DateLike value into a string using the specified format, locale, timezone, and temporal interpretation.

      This method first normalizes the input using parseDateToDayjs, then applies output-specific transformations such as timezone conversion, locale, and formatting. The input is always parsed via parseDateToDayjs, ensuring consistent handling of Date, epoch, and string values. Calendar dates are normalized to local midnight and are not shifted to outputTimezone. Instant dates are converted to outputTimezone before formatting. The locale is applied after parsing and timezone adjustments.

      Parameters

      • date: DateLike

        The input date to format. Can be:

        • A Date object
        • A timestamp number
        • A string (ISO, custom format, or calendar date)
      • format: string = ...

        Optional, the Dayjs format string used to produce the output

      • locale: TypeDisplayLanguage = 'en'

        Optional locale used for formatting (e.g. month and weekday names)

      • outputTimezone: string = ...

        Optional IANA timezone applied to the output when formatting instant dates

      • temporalMode: TemporalMode = ...

        Optional, determines how the input is interpreted:

        • "calendar": treated as a whole calendar day
        • "instant": treated as an exact point in time
      • OptionalinputFormat: string | string[]

        Optional format(s) for parsing string inputs. If provided, these are passed through to parseDateToDayjs

      • OptionalinputTimezone: string

        Optional IANA timezone to apply if the input string has no explicit timezone and is parsed as an instant

      • withZ: boolean = false

        Optional, whether to append a literal 'Z' to the formatted output string

      Returns string

      The formatted date string

    • Formats a date into a short ISO-like string (YYYY-MM-DDTHH:mm:ss).

      This is a convenience wrapper around formatDate that produces a compact, timezone-aware ISO-style representation, optionally appending a Z suffix when formatted in UTC. Uses the format YYYY-MM-DDTHH:mm:ss. Delegates all parsing and formatting logic to formatDate. Appends a literal 'Z' to the output only when outputTimezone is UTC. Calendar dates are not shifted by outputTimezone.

      Parameters

      • date: DateLike

        The input date to format. Can be:

        • A Date object
        • A timestamp number
        • A string (ISO, custom format, or calendar/instant date)
      • outputTimezone: string = ...

        Optional IANA timezone applied to the output when formatting instant dates

      • OptionaltemporalMode: TemporalMode

        Optional, determines how the input is interpreted:

        • "calendar": treated as a calendar date
        • "instant": treated as an exact point in time
      • OptionalinputFormat: string | string[]

        Optional format(s) for parsing string inputs. Passed through to formatDate

      • inputTimezone: string = ...

        Optional IANA timezone to apply if the input string has no explicit timezone and is parsed as an instant

      Returns string

      A short ISO-like formatted date string

    • Formats a single date or a date range according to the specified display format, language, timezone, and temporal mode.

      If a second date is provided, the function returns a string representing the range in the format "date1 / date2".

      Parameters

      • date1: DateLike

        The first date (or the only date) to format

      • dateFormat: TypeDisplayDateFormat

        Object containing the display format for each language

      • locale: TypeDisplayLanguage

        Language code to select the correct format from dateFormat

      • OptionaloutputTimezone: string

        Optional IANA timezone to use for output formatting

      • OptionalinputTemporalMode: TemporalMode

        Optional, whether to interpret the input as 'calendar' or 'instant'

      • Optionaldate2: DateLike

        Optional second date for formatting a date range

      Returns string

      A formatted date string or a formatted date range string

    • Formats a single date or a date range according to the specified display format, language, timezone, and temporal mode.

      If a second date is provided, the function returns a string representing the range in the format "date1 / date2".

      Parameters

      • date1: DateLike

        The first date (or the only date) to format

      • referenceFormat: TypeDisplayDateFormat
      • OptionalinputTemporalMode: TemporalMode

        Optional, whether to interpret the input as 'calendar' or 'instant'

      • Optionaldate2: DateLike

        Optional second date for formatting a date range

      Returns string

      A formatted date string or a formatted date range string

    • Attempts to infer display date configuration from a service-provided date format string.

      The function inspects the format string to determine whether it contains time-related components (e.g., hours, minutes, seconds, timezone tokens). If time components are detected, it assumes:

      • The date represents an instant (not a calendar-only date).
      • The display timezone should default to local. If no time components are detected or the format is undefined, no assumptions are made and undefined is returned. This function performs heuristic inference and may not be accurate for all custom or non-standard format strings. Errors during evaluation are logged and do not propagate.

      Parameters

      • serviceDateFormat: string | undefined

        The date format string provided by the service (e.g., "YYYY-MM-DDTHH:mm:ss")

      Returns GuessedTimeInformation | undefined

      A partial GuessedTimeInformation object containing inferred display settings if time components are detected; otherwise undefined

    • Attempts to infer display date configuration from a service time dimension.

      This function analyzes an array of date values and applies heuristics based on the overall time span and time-of-day consistency to determine:

      • Whether the dates should be treated as instant or calendar values.
      • Which display format is most appropriate.
      • Whether a timezone assumption should be applied. Heuristic rules:
      1. If the total time span between the first and last date is ≤ 1 day:
        • Assume the values represent instants within a single day.
        • Use full datetime formatting.
        • Default display timezone to local.
        • Set temporal mode to instant.
      2. If the total time span is ≥ 10 years:
        • Assume a long-term dataset where year-level precision is sufficient.
        • Use year-only short formatting.
      3. If all dates share the exact same UTC time-of-day (same hours, minutes, seconds):
        • Assume the time component is not meaningful.
        • Use date-only formatting. If none of the heuristics apply, the function returns undefined.

      All comparisons are performed in UTC. This function relies on heuristics and may not be correct for all datasets. Errors during parsing are logged and do not propagate.

      Parameters

      • dates: DateLike[]

        Array of service-provided date values to analyze

      • displayDateMode: DisplayDateMode | undefined

      Returns GuessedTimeInformation | undefined

      A partially populated GuessedTimeInformation object if a confident inference can be made; otherwise undefined

    • Guesses the estimated steps that should be used by the slider, depending on the value range.

      Parameters

      • minValue: number

        The minimum value

      • maxValue: number

        The maximum value

      Returns number | undefined

      The estimated stepping value based on the min and max values, or undefined

    • Determines whether a date/time format string contains any supported time-related tokens.

      The method performs a simple substring check against a predefined list of time tokens (e.g. hours, minutes, seconds, meridiem, Unix time). If the format is undefined, the method safely returns false.

      Parameters

      • format: string | undefined

        The date/time format string to evaluate. May be undefined

      Returns boolean

      true if the format contains at least one recognized time token; otherwise false

    • Checks whether a given IANA time zone is supported by the runtime.

      Validation is performed using Day.js with the timezone plugin, which relies on the underlying Intl time zone database.

      Parameters

      • timezone: string

        IANA time zone identifier to check

      Returns boolean

      true if the time zone is valid and supported, otherwise false

    • Parses a date string as a calendar date, ignoring any timezone or offset semantics and preserving the civil date and time fields as-is.

      This function interprets the input purely in terms of its calendar components (year, month, day, and optional time), then normalizes those components by re-anchoring them in UTC. No timezone conversion is applied. This guarantees that calendar-based dates do not shift days due to timezone offsets, DST, or environment locale.

      Parameters

      • date: string

        Date string to parse

      • OptionalinputFormat: string | string[]

        Optional format or list of formats used to parse the input date string

      • strict: boolean = false

        Optional, whether to enforce strict parsing when using custom formats

      Returns Dayjs

      Dayjs instance normalized to UTC using calendar semantics

    • Parses a DateLike input into a Dayjs object, automatically handling different types of input and temporal modes.

      Supports:

      1. Epoch numbers and Date objects (treated as exact UTC instants)
      2. String representations as either "instant" or "calendar" dates
      3. Optional custom input formats, strict parsing, and timezones

      If date is a number or Date, it is parsed as a UTC instant. If date is a string containing a timezone, it is treated as an "instant" date. If inputTemporalMode is "calendar", the string is parsed with parseCalendarDate and normalized to local midnight. Otherwise, the string is parsed as an instant using parseInstantDate.

      Parameters

      • date: DateLike

        The input date. Can be:

        • A Date object
        • A timestamp number
        • A string (ISO, custom format, or calendar date)
      • OptionalinputFormat: string | string[]

        Optional format(s) for parsing string inputs. If provided, Dayjs will use these formats instead of auto-detection

      • OptionalinputTimezone: string

        Optional IANA timezone to apply if the input string does not have an explicit timezone. Defaults to TIME_UTC in parseInstantDate

      • temporalMode: TemporalMode = ...

        Determines how string inputs are interpreted:

        • "instant": exact point in time
        • "calendar": normalized to midnight local time
      • strict: boolean = false

        Optional, if true, enforces strict parsing according to the provided inputFormat

      Returns Dayjs

      A Dayjs object representing the parsed date

    • Parses a string as an "instant" point in time into a Dayjs object.

      Handles:

      1. Optional custom input formats
      2. Strings with or without explicit timezones
      3. Applying a default timezone if missing

      If the input string contains a timezone (hasTZ is true), it is treated as an exact instant. If the input string lacks a timezone, inputTimezone is applied.

      Parameters

      • date: string

        The input date string to parse

      • OptionalinputFormat: string | string[]

        Optional format(s) for parsing. If provided, Dayjs will use these formats instead of auto-detection

      • inputTimezone: string = ...

        Optional IANA timezone string to apply if the input string has no explicit timezone

      • strict: boolean = false

        Optional, if true, enforces strict parsing according to the provided inputFormat

      Returns Dayjs

      A Dayjs object representing the parsed instant

      When the time zone is not a valid or supported IANA identifier

    • Checks if whatever is sent looks like it could be a date.

      Parameters

      • date: string

        The string to parse to check if it's a date

      • OptionalinputTimezone: string

        Optional timezone to assume for string inputs that do not explicitly include a timezone

      Returns Date | undefined

      A native Date object representing the parsed instant in UTC or undefined if parsing fails

    • Validates that a given IANA time zone is supported by the runtime.

      Parameters

      • timezone: string

        IANA time zone identifier (e.g. 'America/Toronto', 'Europe/Paris', 'UTC')

      Returns void

      When the time zone is not a valid or supported IANA identifier