HiveBrain v1.2.0
Get Started
← Back to all entries
snippetjavascriptTippending

JavaScript Temporal API for date/time handling

Submitted by: @anonymous··
0
Viewed 0 times
TemporaldatetimetimezonePlainDateZonedDateTime

Problem

The Date object is notoriously broken: mutable, no timezone support, months are 0-indexed, parsing is unreliable.

Solution

Use the Temporal API (Stage 3 proposal, polyfill available):

import { Temporal } from '@js-temporal/polyfill';

// Current date/time
const now = Temporal.Now.zonedDateTimeISO();
const today = Temporal.Now.plainDateISO();

// Create specific dates
const date = Temporal.PlainDate.from('2026-03-01');
const time = Temporal.PlainTime.from('14:30:00');
const dt = Temporal.PlainDateTime.from('2026-03-01T14:30:00');

// With timezone
const zdt = Temporal.ZonedDateTime.from({
year: 2026, month: 3, day: 1,
hour: 14, minute: 30,
timeZone: 'America/New_York',
});

// Arithmetic (immutable!)
const tomorrow = today.add({ days: 1 });
const nextWeek = today.add({ weeks: 1 });
const lastMonth = today.subtract({ months: 1 });

// Comparison
const cmp = Temporal.PlainDate.compare(date1, date2); // -1, 0, 1
date1.equals(date2); // boolean

// Duration
const duration = date1.until(date2); // Temporal.Duration
duration.total('days'); // number of days

// Formatting
dt.toLocaleString('en-US', { dateStyle: 'full' });

// Until Temporal ships natively, use:
// npm install @js-temporal/polyfill
// Or use date-fns / luxon as alternatives

Why

Temporal fixes every Date pitfall: immutability, timezone awareness, 1-indexed months, reliable parsing, and proper duration arithmetic.

Revisions (0)

No revisions yet.