🔧 Mode
📝 ISO 8601 String
📝 Build ISO 8601
📝 Duration
📝 Base + Duration
⏰ Current Instant
Shows the current UTC time as ISO 8601 and the epoch in milliseconds.
📤 Output
ℹ️ About ISO 8601 Formatter
ISO 8601 is the international date and time notation used for unambiguous interchange between systems. It covers calendar dates, times of day, UTC offsets, week dates, ordinal dates, durations, time intervals, and recurring intervals. RFC 3339 narrows that family into the timestamp profile most often used by web APIs, logs, JSON payloads, Atom feeds, and database exports.
Use this formatter to parse ISO 8601 strings, generate RFC 3339 timestamps, inspect UTC conversion,
convert seconds into P... or PT... durations, and add durations to a base
date or datetime without relying on a permissive browser date parser.
Supported ISO 8601 forms
- Calendar dates: extended
2026-05-26and basic20260526. - Ordinal dates:
2026-146or2026146, where the last three digits are the day of year. - Week dates:
2026-W22-2or2026W222, using ISO weekday numbers where Monday is 1. - Times:
14:30:00,14:30:00.123,T143000Z, and offset-bearing forms. - Date-times:
2026-05-26T14:30:00+02:00,2026-05-26T12:30:00Z, or a single-space separator for common web timestamp input. - Durations:
PT1H30M,P1Y2M3DT4H5M6S,P10W, and signed durations such as-PT15M. - Intervals:
start/end,start/duration, andduration/end, for example2026-05-26T00:00:00Z/P1D. - Recurring intervals:
R3/2026-05-26T00:00:00Z/P1Dfor three repeats, orR/...for an unbounded recurrence marker.
ISO 8601 vs. RFC 3339
ISO 8601 is broad: it includes compact dates, week dates, ordinal dates, durations, and intervals.
RFC 3339 is intentionally smaller for internet timestamps. It uses a four-digit year, extended
calendar date, full time with seconds, and an explicit offset such as Z or
+02:00. If you are designing an API field named created_at,
expires_at, or timestamp, RFC 3339 is usually the safer interchange
target; use the wider ISO 8601 forms when you specifically need week numbers, day-of-year values,
durations, or intervals.
Practical examples
| Input | What to check | Expected meaning |
|---|---|---|
2026-05-26T14:30:00+02:00 |
Parse timestamp | 2026-05-26T12:30:00Z |
2026-W22-2 |
Convert ISO week date | Tuesday, 2026-05-26 |
2026-146 |
Convert ordinal date | Day 146 of 2026 |
5400 |
Duration from seconds | PT1H30M |
2026-05-26T00:00:00Z + P1DT1H |
Add duration | 2026-05-27T01:00:00Z |
R3/2026-05-26T00:00:00Z/P1D |
Parse recurrence | Three daily intervals from the start instant |
Use cases
- API contracts: confirm whether a field should accept a full RFC 3339 timestamp, a date-only value, or an offset-free local time.
- Log and audit correlation: normalize offset-bearing timestamps to
...Zbefore comparing events from different regions. - Data imports: translate week-date or ordinal-date feeds into regular calendar dates before loading CSV, JSON, or database records.
- Scheduling rules: inspect interval strings such as
start/durationand recurring intervals before wiring them into jobs. - Calendar arithmetic: add
P1M,P7D, orPT30Mto a known base date while keeping the original offset explicit.
Limitations and edge cases
- Offsets are not time zones:
+02:00is a fixed offset, not an IANA zone such asEurope/Helsinki. This tool does not apply daylight-saving rules. - Offset-free date-times stay offset-unknown:
2026-05-26T14:30:00can be parsed, but UTC conversion is only available whenZor+/-HH:MMis present. - Duration totals are contextual: years and months do not have a fixed number of seconds. The duration mode reports an approximate seconds total, while add mode applies years and months against the supplied calendar date.
- Basic and extended syntax should stay consistent: avoid mixing compact dates with colon-separated times in strict integrations.
- Week 53 is conditional: ISO week 53 only exists for years whose week-numbering calendar actually contains a 53rd week.
- Extended timestamp annotations are out of scope: RFC 9557-style bracketed time-zone annotations are not parsed by this formatter.
API Usage Example:
POST /api/tools/time/iso-8601-formatter
Content-Type: application/json
{
"operation": "parse",
"input": "2026-05-26T14:30:00+02:00"
}