Skip to content

Instantly share code, notes, and snippets.

@taggartbg
Last active November 10, 2021 19:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taggartbg/4c76537d4281f46424e9bd561ad98728 to your computer and use it in GitHub Desktop.
Save taggartbg/4c76537d4281f46424e9bd561ad98728 to your computer and use it in GitHub Desktop.
Temporal API Examples for Connect 2021 Presentation
// 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