DateTimeFormat
t
RESCRIPT
type tdateStyle
RESCRIPT
type dateStyle = [#full | #long | #medium | #short]timeStyle
RESCRIPT
type timeStyle = [#full | #long | #medium | #short]dayPeriod
RESCRIPT
type dayPeriod = [#long | #narrow | #short]weekday
RESCRIPT
type weekday = [#long | #narrow | #short]era
RESCRIPT
type era = [#long | #narrow | #short]year
RESCRIPT
type year = [#"2-digit" | #numeric]month
RESCRIPT
type month = [
  | #"2-digit"
  | #long
  | #narrow
  | #numeric
  | #short
]day
RESCRIPT
type day = [#"2-digit" | #numeric]hour
RESCRIPT
type hour = [#"2-digit" | #numeric]minute
RESCRIPT
type minute = [#"2-digit" | #numeric]second
RESCRIPT
type second = [#"2-digit" | #numeric]timeZoneName
RESCRIPT
type timeZoneName = [
  | #long
  | #longGeneric
  | #longOffset
  | #short
  | #shortGeneric
  | #shortOffset
]Firefox also supports IANA time zone names here Node v19+ supports "shortOffset", "shortGeneric", "longOffset", and "longGeneric".
hourCycle
RESCRIPT
type hourCycle = [#h11 | #h12 | #h23 | #h24]formatMatcher
RESCRIPT
type formatMatcher = [#basic | #"best fit"]fractionalSecondDigits
RESCRIPT
type fractionalSecondDigits = [#0 | #1 | #2 | #3]options
RESCRIPT
type options = {
  dateStyle?: dateStyle,
  timeStyle?: timeStyle,
  calendar?: Core__Intl__Common.calendar,
  dayPeriod?: dayPeriod,
  numberingSystem?: Core__Intl__Common.numberingSystem,
  localeMatcher?: Core__Intl__Common.localeMatcher,
  timeZone?: string,
  hour12?: bool,
  hourCycle?: hourCycle,
  formatMatcher?: formatMatcher,
  weekday?: weekday,
  era?: era,
  year?: year,
  month?: month,
  day?: day,
  hour?: hour,
  minute?: minute,
  second?: second,
  fractionalSecondDigits?: fractionalSecondDigits,
  timeZoneName?: timeZoneName,
}resolvedOptions
RESCRIPT
type resolvedOptions = {
  dateStyle?: dateStyle,
  timeStyle?: timeStyle,
  weekday?: weekday,
  era?: era,
  year?: year,
  month?: month,
  day?: day,
  hour?: hour,
  minute?: minute,
  second?: second,
  fractionalSecondDigits?: fractionalSecondDigits,
  timeZoneName?: timeZoneName,
  calendar: Core__Intl__Common.calendar,
  hour12: bool,
  hourCycle: hourCycle,
  locale: string,
  numberingSystem: Core__Intl__Common.numberingSystem,
  timeZone: string,
}supportedLocalesOptions
RESCRIPT
type supportedLocalesOptions = {
  localeMatcher: Core__Intl__Common.localeMatcher,
}dateTimeComponent
RESCRIPT
type dateTimeComponent = [
  | #day
  | #dayPeriod
  | #era
  | #fractionalSecond
  | #hour
  | #literal
  | #minute
  | #month
  | #relatedYear
  | #second
  | #timeZone
  | #weekday
  | #year
  | #yearName
]dateTimePart
RESCRIPT
type dateTimePart = {
  \"type": dateTimeComponent,
  value: string,
}dateTimeRangeSource
RESCRIPT
type dateTimeRangeSource = [
  | #endRange
  | #shared
  | #startRange
]dateTimeRangePart
RESCRIPT
type dateTimeRangePart = {
  \"type": dateTimeComponent,
  value: string,
  source: dateTimeRangeSource,
}make
RESCRIPT
let make: (~locales: array<string>=?, ~options: options=?) => tsupportedLocalesOf
RESCRIPT
let supportedLocalesOf: (array<string>, ~options: supportedLocalesOptions=?) => tresolvedOptions
RESCRIPT
let resolvedOptions: t => resolvedOptionsformat
RESCRIPT
let format: (t, Core__Date.t) => stringformatToParts
RESCRIPT
let formatToParts: (t, Core__Date.t) => array<dateTimePart>formatRange
RESCRIPT
let formatRange: (
  t,
  ~startDate: Core__Date.t,
  ~endDate: Core__Date.t,
) => stringformatRangeToParts
RESCRIPT
let formatRangeToParts: (
  t,
  ~startDate: Core__Date.t,
  ~endDate: Core__Date.t,
) => array<dateTimeRangePart>