JS Temporal PlainDateTime
Date and Time Without Time Zone
What You Will Learn:
- How to use JavaScript Temporal.PlainDateTime
- How to work with date and time without a time zone
- How to add and subtract dates
- How to compare dates safely
Note
A Temporal.PlainDateTime represents a date and time without a time zone.
It is useful when you need both date and time, but not time zone calculations.
Create a PlainDateTime
You can create a PlainDateTime from a string.
Example
const dateTime = Temporal.PlainDateTime.from("2026-02-17T14:30:00");
You can also create one using numeric values.
Example
const dateTime = new Temporal.PlainDateTime(2026, 2, 17, 14, 30);
Months start at 1, not 0.
Get the Current Date and Time
Use Temporal.Now.plainDateTimeISO() to get the current date and time.
Example
const now = Temporal.Now.plainDateTimeISO();
Add or Subtract Time
You can safely add or subtract time.
The original value does not change.
Example
const dateTime = Temporal.PlainDateTime.from("2026-02-17T14:30:00");
const later = dateTime.add({ hours: 2 });
const earlier = dateTime.subtract({ minutes: 30 });
Compare PlainDateTime Values
You can use equals().
Example
const a = Temporal.PlainDateTime.from("2026-02-17T10:00:00");
const b = Temporal.PlainDateTime.from("2026-02-17T10:00:00");
Convert to ZonedDateTime
A PlainDateTime does not include time zone information.
You can convert it to a ZonedDateTime if needed.
Example
const dateTime = Temporal.PlainDateTime.from("2026-02-17T14:30:00");
const zoned = dateTime.toZonedDateTime("Europe/Oslo");
When to Use PlainDateTime
Local event scheduling.
Appointments without international time zone handling.
Forms that collect date and time.
Applications where time zone conversion is not required.
If you need full time zone awareness, use ZonedDateTime instead.
Summary
Temporal.PlainDateTime represents a date and time without time zone information.
It is immutable, easy to compare, and safer than using Date for local date-time values.