Date
Functions for interacting with JavaScript Dates.
compare
let compare: (t, t) => Ordering.tcompare(date1, date2) compares two dates chronologically, returns an Ordering.t value.
Examples
RESDate.compare(Date.fromString("2023-01-01"), Date.fromString("2023-01-01")) == Ordering.equal
Date.compare(Date.fromString("2023-01-01"), Date.fromString("2023-01-02")) == Ordering.less
Date.compare(Date.fromString("2023-01-02"), Date.fromString("2023-01-01")) == Ordering.greater
equal
let equal: (t, t) => boolequal(date1, date2) checks if two dates represent the same point in time.
Examples
RESDate.equal(Date.fromString("2023-01-01"), Date.fromString("2023-01-01")) == true
Date.equal(Date.fromString("2023-01-01"), Date.fromString("2023-01-02")) == false
fromString
let fromString: string => tfromString(dateTimeString)
Creates a date object from given date time string. The string has to be in the ISO 8601 format YYYY-MM-DDTHH:mm:ss.sssZ (https://tc39.es/ecma262/#sec-date-time-string-format).
Invalid date time strings will create invalid dates.
You can use the result like any valid date, but many functions like toString will return "Invalid Date" or functions like Date.getTime will return NaN.
Examples
RESDate.fromString("2023") // 2023-01-01T00:00:00.000Z
Date.fromString("2023-02-20") // 2023-02-20T00:00:00.000Z
Date.fromString("2023-02-20T16:40:00.00Z") // 2023-02-20T16:40:00.000Z
Date.fromString("") // Invalid Date
Date.fromString("")->Date.getTime // NaN
fromTime
let fromTime: msSinceEpoch => tfromTime(msSinceEpoch)
Creates a date object from the given time in milliseconds since / until UNIX epoch (January 1, 1970 00:00:00 UTC). Positive numbers create dates after epoch, negative numbers create dates before epoch.
Examples
RESDate.fromTime(0.0)
// 1970-01-01T00:00:00.000Z
Date.fromTime(-86_400_000.0)
// 1969-12-31T00:00:00.000Z
Date.fromTime(86_400_000.0)
// 1970-01-02T00:00:00.000Z
getDate
let getDate: t => intgetDate(date)
Returns the date (day of month) of a given date (according to local time).
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.getDate
// 20
getDay
let getDay: t => intgetDay(date)
Returns the day of week of a given date (according to local time). 0 = Sunday, 1 = Monday, ... 6 = Saturday
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.getDay
// 1
getFullYear
let getFullYear: t => intgetFullYear(date)
Returns the year of a given date (according to local time).
Examples
RESDate.fromString("2023-02-20")->Date.getFullYear
// 2023
getHours
let getHours: t => intgetHours(date)
Returns the hours of a given date (according to local time).
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.getHours
// 16
getMilliseconds
let getMilliseconds: t => intgetMilliseconds(date)
Returns the milliseconds of a given date (according to local time).
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.getMilliseconds
// 0
getMinutes
let getMinutes: t => intgetMinutes(date)
Returns the minutes of a given date (according to local time).
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.getMinutes
// 40
getMonth
let getMonth: t => intgetMonth(date)
Returns the month (0-indexed) of a given date (according to local time).
Examples
RESDate.fromString("2023-01-01")->Date.getMonth
// 0
getSeconds
let getSeconds: t => intgetSeconds(date)
Returns the seconds of a given date (according to local time).
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.getSeconds
// 0
getTime
let getTime: t => msSinceEpochgetTime(date)
Returns the time, in milliseconds, between UNIX epoch (January 1, 1970 00:00:00 UTC) and the current date time. Invalid dates will return NaN. Dates before epoch will return negative numbers.
Examples
RESDate.fromString("2023-02-20")->Date.getTime
// 1676851200000
getTimezoneOffset
let getTimezoneOffset: t => intgetTimezoneOffset(date)
Returns the time in minutes between the UTC time and the locale time. The timezone of the given date doesn't matter.
Examples
RESDate.fromString("2023-01-01")->Date.getTimezoneOffset
// -60 with local time zone = Europe/Berlin
Date.fromString("2023-06-01")->Date.getTimezoneOffset
// -120 with local time zone = Europe/Berlin
getUTCDate
let getUTCDate: t => intgetUTCDate(date)
Returns the date (day of month) of a given date (according to UTC time).
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.getUTCDate // 31
getUTCDay
let getUTCDay: t => intgetUTCDay(date)
Returns the day (day of week) of a given date (according to UTC time). 0 = Sunday, 1 = Monday, ... 6 = Saturday
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.getUTCDay // 6
getUTCFullYear
let getUTCFullYear: t => intgetUTCFullYear(date)
Returns the year of a given date (according to UTC time).
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.getUTCFullYear // 2022
getUTCHours
let getUTCHours: t => intgetUTCHours(date)
Returns the hours of a given date (according to UTC time).
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.getUTCHours // 23
getUTCMilliseconds
let getUTCMilliseconds: t => intgetUTCMilliseconds(date)
Returns the milliseconds of a given date (according to UTC time).
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.getUTCMilliseconds // 0
getUTCMinutes
let getUTCMinutes: t => intgetUTCMinutes(date)
Returns the minutes of a given date (according to UTC time).
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.getUTCMinutes // 0
getUTCMonth
let getUTCMonth: t => intgetUTCMonth(date)
Returns the month of a given date (according to UTC time).
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.getUTCMonth // 11
getUTCSeconds
let getUTCSeconds: t => intgetUTCSeconds(date)
Returns the seconds of a given date (according to UTC time).
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.getUTCSeconds // 0
ignore
let ignore: t => unitignore(date) ignores the provided date and returns unit.
This helper is useful when you want to discard a value (for example, the result of an operation with side effects) without having to store or process it further.
localeOptions
type localeOptions = {
dateStyle?: [#full | #long | #medium | #short],
timeStyle?: [#full | #long | #medium | #short],
weekday?: [#long | #narrow | #short],
era?: [#long | #narrow | #short],
year?: [#"2-digit" | #numeric],
month?: [
| #"2-digit"
| #long
| #narrow
| #numeric
| #short
],
day?: [#"2-digit" | #numeric],
hour?: [#"2-digit" | #numeric],
minute?: [#"2-digit" | #numeric],
second?: [#"2-digit" | #numeric],
timeZoneName?: [#long | #short],
}A type representing date time format options.
Note: There are some properties missing:
fractionalSecondDigits
dayPeriod
calendar
numberingSystem
localeMatcher
timeZone
hour12
hourCycle
formatMatcher
See full spec at https://tc39.es/ecma402/#datetimeformat-objects
make
let make: unit => tmakeWithYM
let makeWithYM: (~year: int, ~month: int) => tCreates a date object with the given year and month. Be aware of using a value for year < 100, because it behaves inconsistent (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years). Months are 0-indexed (0 = January, 11 = December). Values, which are out of range, will be carried over to the next bigger unit (s. example).
Examples
RESDate.makeWithYM(~year=2023, ~month=0)
// 2023-01-01T00:00:00.000Z
Date.makeWithYM(~year=2023, ~month=11)
// 2023-12-01T00:00:00.000Z
Date.makeWithYM(~year=2023, ~month=12)
// 2024-01-01T00:00:00.000Z
Date.makeWithYM(~year=2023, ~month=-1)
// 2022-12-01T00:00:00.000Z
// Note: The output depends on your local time zone.
// In nodejs you can change it by using the TZ env (`export TZ='Europe/London' && node index.bs.js`)
makeWithYMD
let makeWithYMD: (~year: int, ~month: int, ~day: int) => tCreates a date object with the given year, month and date (day of month). Be aware of using a value for year < 100, because it behaves inconsistent (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years). Months are 0-indexed (0 = January, 11 = December). Values, which are out of range, will be carried over to the next bigger unit (s. example).
Examples
RESDate.makeWithYMD(~year=2023, ~month=1, ~day=20)
// 2023-02-20T00:00:00.000Z
Date.makeWithYMD(~year=2023, ~month=1, ~day=-1)
// 2022-11-29T00:00:00.000Z
Date.makeWithYMD(~year=2023, ~month=1, ~day=29)
// 2023-03-01T00:00:00.000Z
makeWithYMDH
let makeWithYMDH: (~year: int, ~month: int, ~day: int, ~hours: int) => tCreates a date object with the given year, month, date (day of month) and hours. Be aware of using a value for year < 100, because it behaves inconsistent (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years). Months are 0-indexed (0 = January, 11 = December). Values, which are out of range, will be carried over to the next bigger unit (s. example).
Examples
RESDate.makeWithYMDH(~year=2023, ~month=1, ~day=20, ~hours=16)
// 2023-02-20T16:00:00.000Z
Date.makeWithYMDH(~year=2023, ~month=1, ~day=20, ~hours=24)
// 2023-02-21T00:00:00.000Z
Date.makeWithYMDH(~year=2023, ~month=1, ~day=20, ~hours=-1)
// 2023-02-19T23:00:00.000Z
// Note: The output depends on your local time zone.
// In nodejs you can change it by using the TZ env (`export TZ='Europe/London' && node index.bs.js`)
makeWithYMDHM
let makeWithYMDHM: (
~year: int,
~month: int,
~day: int,
~hours: int,
~minutes: int,
) => tCreates a date object with the given year, month, date (day of month), hours and minutes. Be aware of using a value for year < 100, because it behaves inconsistent (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years). Months are 0-indexed (0 = January, 11 = December). Values, which are out of range, will be carried over to the next bigger unit (s. example).
Examples
RESDate.makeWithYMDHM(~year=2023, ~month=1, ~day=20, ~hours=16, ~minutes=40)
// 2023-02-20T16:40:00.000Z
Date.makeWithYMDHM(~year=2023, ~month=1, ~day=20, ~hours=16, ~minutes=60)
// 2023-02-20T17:00:00.000Z
Date.makeWithYMDHM(~year=2023, ~month=1, ~day=20, ~hours=16, ~minutes=-1)
// 2023-02-20T15:59:00.000Z
// Note: The output depends on your local time zone.
// In nodejs you can change it by using the TZ env (`export TZ='Europe/London' && node index.bs.js`)
makeWithYMDHMS
let makeWithYMDHMS: (
~year: int,
~month: int,
~day: int,
~hours: int,
~minutes: int,
~seconds: int,
) => tCreates a date object with the given year, month, date (day of month), hours, minutes and seconds. Be aware of using a value for year < 100, because it behaves inconsistent (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years). Months are 0-indexed (0 = January, 11 = December). Values, which are out of range, will be carried over to the next bigger unit (s. example).
Examples
RESDate.makeWithYMDHMS(~year=2023, ~month=1, ~day=20, ~hours=16, ~minutes=40, ~seconds=0)
// 2023-02-20T16:40:00.000Z
Date.makeWithYMDHMS(~year=2023, ~month=1, ~day=20, ~hours=16, ~minutes=40, ~seconds=60)
// 2023-02-20T16:41:00.000Z
Date.makeWithYMDHMS(~year=2023, ~month=1, ~day=20, ~hours=16, ~minutes=40, ~seconds=-1)
// 2023-02-20T16:39:59.000Z
// Note: The output depends on your local time zone.
// In nodejs you can change it by using the TZ env (`export TZ='Europe/London' && node index.bs.js`)
makeWithYMDHMSM
let makeWithYMDHMSM: (
~year: int,
~month: int,
~day: int,
~hours: int,
~minutes: int,
~seconds: int,
~milliseconds: int,
) => tCreates a date object with the given year, month, date (day of month), hours, minutes, seconds and milliseconds. Be aware of using a value for year < 100, because it behaves inconsistent (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years). Months are 0-indexed (0 = January, 11 = December). Values, which are out of range, will be carried over to the next bigger unit (s. example).
Examples
RESDate.makeWithYMDHMSM(
~year=2023,
~month=1,
~day=20,
~hours=16,
~minutes=40,
~seconds=0,
~milliseconds=0,
)
// 2023-02-20T16:40:00.000Z
Date.makeWithYMDHMSM(
~year=2023,
~month=1,
~day=20,
~hours=16,
~minutes=40,
~seconds=0,
~milliseconds=1000,
)
// 2023-02-20T16:40:01.000Z
Date.makeWithYMDHMSM(
~year=2023,
~month=1,
~day=20,
~hours=16,
~minutes=40,
~seconds=0,
~milliseconds=-1,
)
// 2023-02-20T16:39:59.999Z
// Note: The output depends on your local time zone.
// In nodejs you can change it by using the TZ env (`export TZ='Europe/London' && node index.bs.js`)
msSinceEpoch
type msSinceEpoch = floatTime, in milliseconds, since / until the UNIX epoch (January 1, 1970 00:00:00 UTC). Positive numbers represent dates after, negative numbers dates before epoch.
now
let now: unit => msSinceEpochnow()
Returns the time, in milliseconds, between UNIX epoch (January 1, 1970 00:00:00 UTC) and the current date time.
setDate
let setDate: (t, int) => unitsetDate(date, day)
Sets the date (day of month) of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setDate(1)
setFullYear
let setFullYear: (t, int) => unitsetFullYear(date, year)
Sets the year of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setFullYear(2024)
setFullYearM
let setFullYearM: (t, ~year: int, ~month: int) => unitsetFullYearM(date, ~year, ~month)
Sets the year and month of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setFullYearM(~year=2024, ~month=0)
setFullYearMD
let setFullYearMD: (t, ~year: int, ~month: int, ~day: int) => unitsetFullYearMD(date, ~year, ~month, ~day)
Sets the year, month and date (day of month) of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setFullYearMD(~year=2024, ~month=0, ~day=1)
setHours
let setHours: (t, int) => unitsetHours(date, hours)
Sets the hours of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setHours(0)
setHoursM
let setHoursM: (t, ~hours: int, ~minutes: int) => unitsetHoursM(date, ~hours, ~minutes)
Sets the hours and minutes of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setHoursM(~hours=0, ~minutes=0)
setHoursMS
let setHoursMS: (t, ~hours: int, ~minutes: int, ~seconds: int) => unitsetHoursMS(date, ~hours, ~minutes, ~seconds)
Sets the hours, minutes and seconds of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setHoursMS(~hours=0, ~minutes=0, ~seconds=0)
setHoursMSMs
let setHoursMSMs: (
t,
~hours: int,
~minutes: int,
~seconds: int,
~milliseconds: int,
) => unitsetHoursMSMs(date, ~hours, ~minutes, ~seconds, ~milliseconds)
Sets the hours, minutes, seconds and milliseconds of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setHoursMSMs(
~hours=0,
~minutes=0,
~seconds=0,
~milliseconds=0,
)
setMilliseconds
let setMilliseconds: (t, int) => unitsetMilliseconds(date, milliseconds)
Sets the milliseconds of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setMilliseconds(0)
setMinutes
let setMinutes: (t, int) => unitsetMinutes(date, minutes)
Sets the minutes of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setMinutes(0)
setMinutesS
let setMinutesS: (t, ~minutes: int, ~seconds: int) => unitsetMinutesS(date, ~minutes, ~seconds)
Sets the minutes and seconds of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setMinutesS(~minutes=0, ~seconds=0)
setMinutesSMs
let setMinutesSMs: (
t,
~minutes: int,
~seconds: int,
~milliseconds: int,
) => unitsetMinutesSMs(date, ~minutes, ~seconds, ~milliseconds)
Sets the minutes, seconds and milliseconds of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setMinutesSMs(
~minutes=0,
~seconds=0,
~milliseconds=0,
)
setMonth
let setMonth: (t, int) => unitsetMonth(date, month)
Sets the month of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setMonth(0)
setSeconds
let setSeconds: (t, int) => unitsetSeconds(date, seconds)
Sets the seconds of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setSeconds(0)
setSecondsMs
let setSecondsMs: (t, ~seconds: int, ~milliseconds: int) => unitsetSecondsMs(date, ~seconds, ~milliseconds)
Sets the seconds and milliseconds of a date (according to local time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setSecondsMs(~seconds=0, ~milliseconds=0)
setUTCDate
let setUTCDate: (t, int) => unitsetDate(date, day)
Sets the date (day of month) of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCDate(1)
setUTCFullYear
let setUTCFullYear: (t, int) => unitsetUTCFullYear(date, year)
Sets the year of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCFullYear(2024)
setUTCFullYearM
let setUTCFullYearM: (t, ~year: int, ~month: int) => unitsetUTCFullYearM(date, ~year, ~month)
Sets the year and month of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCFullYearM(~year=2024, ~month=0)
setUTCFullYearMD
let setUTCFullYearMD: (t, ~year: int, ~month: int, ~day: int) => unitsetUTCFullYearMD(date, ~year, ~month, ~day)
Sets the year, month and date (day of month) of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCFullYearMD(~year=2024, ~month=0, ~day=1)
setUTCHours
let setUTCHours: (t, int) => unitsetUTCHours(date, hours)
Sets the hours of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCHours(0)
setUTCHoursM
let setUTCHoursM: (t, ~hours: int, ~minutes: int) => unitsetHoursM(date, ~hours, ~minutes)
Sets the hours and minutes of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCHoursM(~hours=0, ~minutes=0)
setUTCHoursMS
let setUTCHoursMS: (t, ~hours: int, ~minutes: int, ~seconds: int) => unitsetUTCHoursMS(date, ~hours, ~minutes, ~seconds)
Sets the hours, minutes and seconds of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCHoursMS(~hours=0, ~minutes=0, ~seconds=0)
setUTCHoursMSMs
let setUTCHoursMSMs: (
t,
~hours: int,
~minutes: int,
~seconds: int,
~milliseconds: int,
) => unitsetUTCHoursMSMs(date, ~hours, ~minutes, ~seconds, ~milliseconds)
Sets the hours, minutes, seconds and milliseconds of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCHoursMSMs(
~hours=0,
~minutes=0,
~seconds=0,
~milliseconds=0,
)
setUTCMilliseconds
let setUTCMilliseconds: (t, int) => unitsetUTCMilliseconds(date, milliseconds)
Sets the milliseconds of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCMilliseconds(0)
setUTCMinutes
let setUTCMinutes: (t, int) => unitsetUTCMinutes(date, minutes)
Sets the minutes of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCMinutes(0)
setUTCMinutesS
let setUTCMinutesS: (t, ~minutes: int, ~seconds: int) => unitsetUTCMinutesS(date, ~minutes, ~seconds)
Sets the minutes and seconds of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCMinutesS(~minutes=0, ~seconds=0)
setUTCMinutesSMs
let setUTCMinutesSMs: (
t,
~minutes: int,
~seconds: int,
~milliseconds: int,
) => unitsetUTCMinutesSMs(date, ~minutes, ~seconds, ~milliseconds)
Sets the minutes, seconds and milliseconds of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCMinutesSMs(
~minutes=0,
~seconds=0,
~milliseconds=0,
)
setUTCMonth
let setUTCMonth: (t, int) => unitsetUTCMonth(date, month)
Sets the month of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCMonth(0)
setUTCSeconds
let setUTCSeconds: (t, int) => unitsetUTCSeconds(date, seconds)
Sets the seconds of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCSeconds(0)
setUTCSecondsMs
let setUTCSecondsMs: (t, ~seconds: int, ~milliseconds: int) => unitsetUTCSecondsMs(date, ~seconds, ~milliseconds)
Sets the seconds and milliseconds of a date (according to UTC time). Beware this will mutate the date.
Examples
RESDate.fromString("2023-02-20T16:40:00.00")->Date.setUTCSecondsMs(~seconds=0, ~milliseconds=0)
t
type tA type representing a JavaScript date.
toDateString
let toDateString: t => stringtoDateString(date)
Converts a JavaScript date to a standard date string. The date will be mapped to the current time zone.
If you want to convert it to a localized string, use Date.toLocaleDateString instead.
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.toDateString->Console.log
// Sun Jan 01 2023
Date.fromString("2023-01-01T00:00:00.00+08:00")->Date.toDateString->Console.log
// Sat Dec 31 2022
toISOString
let toISOString: t => stringtoISOString(date)
Converts a JavaScript date to a ISO 8601 string (YYYY-MM-DDTHH:mm:ss.sssZ). The date will be mapped to the UTC time.
Examples
RESDate.fromString("2023-01-01T00:00:00.00+00:00")->Date.toISOString->Console.log
// 2023-01-01T00:00:00.000Z
Date.fromString("2023-01-01T00:00:00.00+08:00")->Date.toISOString->Console.log
// 2022-12-31T16:00:00.000Z
toJSON
let toJSON: t => option<string>toJSON(date)
Converts a JavaScript date to a string.
If the date is valid, the function will return the same result as Date.toISOString.
Invalid dates will return None.
Examples
RESDate.fromString("2023-01-01T00:00:00.00+00:00")->Date.toJSON
// Some("2023-01-01T00:00:00.000Z")
Date.fromString("")->Date.toJSON
// None
toLocaleDateString
let toLocaleDateString: t => stringtoLocaleDateString(date)
Converts a JavaScript date to a localized date string. It will use the current locale.
Examples
RESDate.make()->Date.toLocaleDateString->Console.log
// 2/19/2023
toLocaleDateStringWithLocale
let toLocaleDateStringWithLocale: (t, string) => stringtoLocaleDateStringWithLocale(date, locale)
Converts a JavaScript date to a localized date string. It will use the specified locale.
Examples
RESDate.make()->Date.toLocaleDateStringWithLocale("en-US")->Console.log
// 2/19/2023
toLocaleDateStringWithLocaleAndOptions
let toLocaleDateStringWithLocaleAndOptions: (t, string, localeOptions) => stringtoLocaleDateStringWithLocaleAndOptions(date, locale, options)
Converts a JavaScript date to a localized date string. It will use the specified locale and formatting options.
Examples
RESDate.make()->Date.toLocaleDateStringWithLocaleAndOptions("en-US", {dateStyle: #long})->Console.log
// February 19, 2023
Date.make()
->Date.toLocaleDateStringWithLocaleAndOptions("de", {hour: #"2-digit", minute: #"2-digit"})
->Console.log
// 19.2.2023, 15:40
Date.make()->Date.toLocaleDateStringWithLocaleAndOptions("de", {year: #numeric})->Console.log
// 2023
toLocaleString
let toLocaleString: t => stringtoLocaleString(date)
Converts a JavaScript date to a localized date-time string. It will use the current locale.
Examples
RESDate.make()->Date.toLocaleString->Console.log
// 2/19/2023, 3:40:00 PM
toLocaleStringWithLocale
let toLocaleStringWithLocale: (t, string) => stringtoLocaleStringWithLocale(date, locale)
Converts a JavaScript date to a localized date-time string. It will use the specified locale.
Examples
RESDate.make()->Date.toLocaleStringWithLocale("en-US")->Console.log
// 2/19/2023, 3:40:00 PM
toLocaleStringWithLocaleAndOptions
let toLocaleStringWithLocaleAndOptions: (t, string, localeOptions) => stringtoLocaleStringWithLocaleAndOptions(date, locale, options)
Converts a JavaScript date to a localized date-time string. It will use the specified locale and formatting options.
Examples
RESDate.make()
->Date.toLocaleStringWithLocaleAndOptions("en", {dateStyle: #short, timeStyle: #short})
->Console.log
// 2/19/23, 3:40 PM
Date.make()
->Date.toLocaleStringWithLocaleAndOptions(
"en",
{
era: #long,
year: #numeric,
month: #"2-digit",
day: #"2-digit",
hour: #numeric,
timeZoneName: #short,
},
)
->Console.log
// 02/19/2023 Anno Domini, 3 PM GMT+1
toLocaleTimeString
let toLocaleTimeString: t => stringtoLocaleTimeString(date)
Converts a JavaScript date to a localized time string. It will use the current locale.
Examples
RESDate.make()->Date.toLocaleTimeString->Console.log
// 3:40:00 PM
toLocaleTimeStringWithLocale
let toLocaleTimeStringWithLocale: (t, string) => stringtoLocaleTimeStringWithLocale(date, locale)
Converts a JavaScript date to a localized time string. It will use the specified locale.
Examples
RESDate.make()->Date.toLocaleTimeStringWithLocale("en-US")->Console.log
// 3:40:00 PM
toLocaleTimeStringWithLocaleAndOptions
let toLocaleTimeStringWithLocaleAndOptions: (t, string, localeOptions) => stringtoLocaleTimeStringWithLocaleAndOptions(date, locale, options)
Converts a JavaScript date to a localized time string. It will use the specified locale and formatting options.
Examples
RESDate.make()->Date.toLocaleTimeStringWithLocaleAndOptions("en-US", {timeStyle: #long})->Console.log
// 3:40:00 PM GMT+1
Date.make()
->Date.toLocaleTimeStringWithLocaleAndOptions("de", {hour: #"2-digit", minute: #"2-digit"})
->Console.log
// 15:40
toString
let toString: t => stringtoString(date)
Converts a JavaScript date to a standard date time string. The date will be mapped to the current time zone.
If you want to convert it to a localized string, use Date.toLocaleString instead.
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.toString->Console.log
// Sun Jan 01 2023 00:00:00 GMT+0100 (Central European Standard Time)
Date.fromString("2023-06-01T00:00:00.00+01:00")->Date.toString->Console.log
// Thu Jun 01 2023 01:00:00 GMT+0200 (Central European Summer Time)
toTimeString
let toTimeString: t => stringtoTimeString(date)
Converts a JavaScript date to a standard time string. The date will be mapped to the current time zone.
If you want to convert it to a localized string, use Date.toLocaleStimeString instead.
Examples
RESDate.fromString("2023-01-01T00:00:00.00+01:00")->Date.toTimeString->Console.log
// 00:00:00 GMT+0100 (Central European Standard Time)
Date.fromString("2023-01-01T00:00:00.00+08:00")->Date.toTimeString->Console.log
// 17:00:00 GMT+0100 (Central European Standard Time)
toUTCString
let toUTCString: t => stringtoUTCString(date)
Converts a JavaScript date to date time string. The date will be mapped to the UTC time.
Examples
RESDate.fromString("2023-01-01T00:00:00.00+00:00")->Date.toUTCString->Console.log
// Sun, 01 Jan 2023 00:00:00 GMT
Date.fromString("2023-01-01T00:00:00.00+08:00")->Date.toUTCString->Console.log
// Sat, 31 Dec 2022 16:00:00 GMT