Last active
November 10, 2021 19:39
-
-
Save taggartbg/4c76537d4281f46424e9bd561ad98728 to your computer and use it in GitHub Desktop.
Temporal API Examples for Connect 2021 Presentation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Create an Instant | |
const now = Temporal.Now.instant() | |
// Plain Objects | |
const pd = Temporal.Now.plainDateISO() | |
const pt = Temporal.Now.plainTimeISO() | |
const pdt = Temporal.Now.plainDateTimeISO() | |
const pdt2 = Temporal.PlainDateTime.from(pd).withPlainTime(pt) | |
const pym = Temporal.PlainYearMonth.from({ year: 2020, month: 10 }) | |
// Zoned Objects | |
const zdt = pdt.toZonedDateTime('America/New_York') | |
const fireworks = Temporal.PlainDateTime.from({ year: 2020, month: 7, day: 4 }) | |
fireworks.toZonedDateTime('America/Denver') | |
fireworks.toZonedDateTime('America/Phoenix') | |
// Timezones | |
const tz1 = Temporal.TimeZone.from('America/New_York') | |
const i1 = tz1.getInstantFor({ year: 2021, month: 1, day: 23 }) | |
const tz2 = Temporal.TimeZone.from('Africa/Cairo') | |
const i2 = tz2.getInstantFor({ year: 2021, month: 1, day: 23 }) | |
i1.until(i2).total({unit: 'hours'}) | |
// Strings | |
Temporal.Now.zonedDateTimeISO().toString() | |
new Date().toString() | |
// Duration | |
const pym2 = Temporal.PlainYearMonth.from({ year: 2020, month: 12 }) | |
pym.until(pym2) | |
const a = Temporal.Now.plainDateTimeISO() | |
const b = Temporal.Now.plainDateTimeISO() | |
a.since(b) | |
// Arithmetic | |
Temporal.Now.instant().add({ hours: 5 }) | |
const dur3 = Temporal.Duration.from({ hours: 5 }) | |
Temporal.Now.instant().subtract(dur3) | |
// Comparison | |
const veteransDay = Temporal.PlainDate.from('2022-11-11') | |
const presidentsDay = Temporal.PlainDate.from('2022-02-21') | |
const memorialDay = Temporal.PlainDate.from('2022-05-30') | |
[veteransDay, presidentsDay, memorialDay].sort(Temporal.PlainDate.compare).join(' ') | |
// Balancing / Rounding | |
const dur = Temporal.Duration.from({ seconds: 90 }) | |
dur.round({ largestUnit: 'minutes' }) | |
dur.round({ smallestUnit: 'minutes'}) | |
dur.round({ smallestUnit: 'minutes', roundingMode: 'floor'}) | |
const dur2 = Temporal.Duration.from('PT1M30S') | |
dur2.round({ largestUnit: 'seconds' }) | |
// Balancing / Relative To | |
const dur4 = Temporal.Duration.from({ days: 370 }) | |
dur4.round({ largestUnit: 'year' }); | |
dur4.round({ largestUnit: 'year', relativeTo: '2019-01-01' }) | |
dur4.round({ largestUnit: 'year', relativeTo: '2020-01-01' }) | |
// Balancing / Disambiguation | |
const unambiguous = Temporal.ZonedDateTime.from('2020-11-01T01:30-08:00[America/Los_Angeles]') | |
const ambiguous = unambiguous.toPlainDateTime() | |
ambiguous.toZonedDateTime('America/Los_Angeles') | |
ambiguous.toZonedDateTime('America/Los_Angeles', { disambiguation: 'compatible'}) | |
ambiguous.toZonedDateTime('America/Los_Angeles', { disambiguation: 'earlier'}) | |
ambiguous.toZonedDateTime('America/Los_Angeles', { disambiguation: 'later'}) | |
ambiguous.toZonedDateTime('America/Los_Angeles', { disambiguation: 'reject'}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment