Time Converter — Manual
Full reference for the Time Converter: Current, Convert and Difference tabs, timestamp unit detection, every output format, IANA time zones, server endpoints.
Back to overview: Time Converter · Open the live tool: www.jpkc.com/tools/time/
This manual describes the Time Converter in full: how the three tabs are laid out, which formats the output contains, what every field and button does, and where the limits are. The tool's interface is in English, so labels, buttons, and messages appear here exactly as you see them on screen.
Interface layout
The Time Converter is a single card with three tabs at the top and two global settings in the card footer:
- Current — the live clock.
- Convert — conversion between date and time, Unix timestamp, and free date text.
- Difference — the time-difference calculator.
- In the card footer: Language (language of the localized output) and Time zone (time zone for input and display). Both apply to all three tabs.
There is no Calculate or Convert button: every input is evaluated as you type, and the results appear right away in a table (columns: label, value, copy button). Each row has its own copy button with a clipboard icon that puts exactly that one value on the clipboard.
Data basis: the Intl API and wall-clock time
All the time logic runs client-side through the browser's Intl API (Intl.DateTimeFormat, Intl.RelativeTimeFormat, Intl.DurationFormat, Intl.DisplayNames). Time zones come from the IANA time zone database your browser ships with; the tool loads no date library and no locale files of its own. Four things matter for understanding every input and output:
- Date fields and ISO text without an offset are wall-clock time in the selected time zone. With
America/New_Yorkselected in the footer,12:00in the date field means noon in New York, whatever time zone your device runs in. The field labels show the active zone in brackets, for example Date & time (Europe/Berlin). The exception: free text in other formats without a zone is read by your browser's date parser in your device's time zone (see Free date text). - Daylight saving time is handled exactly. A time that doesn't exist because the clocks spring forward (in Central Europe, 02:30 on the last Sunday in March) is an error. A time that occurs twice (02:30 on the last Sunday in October) is read as its first occurrence, and the tool tells you so.
- Invalid dates are rejected, not shifted: 31 February produces an error message rather than 3 March.
- Year range: date fields and ISO text accept the years 1 to 9999; the tool doesn't check timestamps or RFC 2822/HTTP text against this limit. Historical offsets from before standard time zones were introduced (local mean time such as
+05:21:10for Kolkata before 1900) are shown to the second.
Timestamp units
The tool accepts Unix timestamps in four units and works out the unit from the size of the number (the digits before the decimal point):
| Value (absolute) | Digits | Unit |
|---|---|---|
| below 10¹¹ | up to 11 | seconds (s) |
| 10¹¹ to below 10¹⁴ | 12–14 | milliseconds (ms) |
| 10¹⁴ to below 10¹⁷ | 15–17 | microseconds (µs) |
| 10¹⁷ and above | 18 or more | nanoseconds (ns) |
A present-day seconds value has 10 digits, a JavaScript Date.now() has 13 — you can paste either as is. The tool classifies the number with BigInt, so even 19-digit nanosecond values stay exact. A minus sign (moments before 1970) and a decimal part are allowed; spaces, underscores, and apostrophes used as thousands separators (1_700_000_000, 1'700'000'000) are ignored. Values beyond what JavaScript dates can represent — about 273,790 years either side of 1970, roughly from 271,822 BC to the year 275,760 — are rejected with "Out of range …".
The output formats
Current and Convert show the moment in the same table. The clock time follows the selected time zone; the localized rows (Full to Short, Time zone, Relative to now) also follow the selected language. The sample values are for 1700000000, time zone Europe/Berlin, language British English (en-GB):
| Row | Content | Example |
|---|---|---|
| Unix timestamp (s) | seconds since 1970-01-01 UTC (rounded down) | 1700000000 |
| Unix timestamp (ms) | milliseconds | 1700000000000 |
| ISO 8601 (Zone) | ISO 8601 in the selected zone with offset; milliseconds only when present | 2023-11-14T23:13:20+01:00 |
| ISO 8601 (UTC) | the same in UTC with Z — omitted when the zone itself is UTC |
2023-11-14T22:13:20Z |
| RFC 2822 (e-mail) | e-mail date format with offset ±hhmm |
Tue, 14 Nov 2023 23:13:20 +0100 |
| HTTP date (RFC 9110, UTC) | HTTP date, always GMT | Tue, 14 Nov 2023 22:13:20 GMT |
| Full | long date with weekday, time with zone abbreviation | Tuesday, 14 November 2023 at 23:13:20 CET |
| Long | long date, time with seconds | 14 November 2023 at 23:13:20 |
| Medium | medium date, time with seconds | 14 Nov 2023, 23:13:20 |
| Short | short date and time | 14/11/2023, 23:13 |
| Time zone | IANA name, full zone name, offset at that moment | Europe/Berlin — Central European Standard Time (UTC+01:00) |
| ISO week · day of year | ISO week date (year-week-weekday) and day of the year | 2023-W46-2 · day 318 |
| Relative to now | rounded relative phrase — Convert tab only | 3 years ago |
The exact wording of Full to Short and of the zone names comes from your browser and can vary slightly between browsers and versions. Years outside 0 to 9999 appear in the ISO row in the extended form with a sign and six digits (+010000-…); historical offsets appear as ±hh:mm:ss.
The "Current" tab
Live clock and formats
The Current tab shows the current time ("Now, in the time zone and language below.") and refreshes the table every second. You see the ticking Unix timestamp in seconds and milliseconds, the ISO forms, and all localized spellings side by side, each in the configured time zone and language. The Relative to now row is left out here, because it says nothing about now.
Pause and Resume
The Pause button at the top right stops the live update; it then reads Resume and restarts the clock on the next click. While paused, the table stays at the last moment shown — handy when you want to copy a value without it ticking away. The clock is running when the page loads. If you change the language or time zone while paused, the tool redraws the table once with the current time.
Copying
The clipboard button at the end of each row copies exactly that value — only the millisecond timestamp, say, or only the HTTP date.
The "Convert" tab
This tab has three input fields side by side ("Edit any field — the others follow. Dates are read in the time zone below."). The date field and the timestamp field keep each other in sync: whatever you enter in one of them is carried over immediately to the other and to the result table below. Input in the text field sets both fields and the table. The text field itself is input only — the tool never writes a value into it, it clears it instead (see below). On load the date and timestamp fields show the current time, rounded down to the full second, and the text field is empty.
Date/time → Unix timestamp
The Date & time (Zone) field is your browser's date-and-time picker with seconds, limited to 0001-01-01T00:00:00 through 9999-12-31T23:59:59. The value counts as wall-clock time in the selected time zone. As soon as the date is complete, the matching Unix timestamp appears in the next field and every format in the table. Now beside it sets the date and timestamp fields and the table to the current moment.
Unix timestamp → date/time
Type or paste a timestamp into the Unix timestamp field. The small badge next to the label shows the detected unit (s, ms, µs, or ns, and ? when the input is not a number; the tooltip spells it out). The detection rules are described above under Timestamp units. When the tool fills the field itself (after you edit one of the other fields or click Now), it always writes seconds.
Two buttons sit next to the field: Now (current moment) and Server (see below).
Free date text (Any date text)
The third field, Any date text, takes dates as text — meant for values you copy from logs, headers, or API responses. Below the field the tool shows how it read your input ("Read as …"):
- A plain number → treated as a timestamp with unit detection ("timestamp (ms)").
- ISO 8601 without an offset —
2026-07-01,2026-07-01 12:00,2026-07-01T12:00:30.250— is read as wall-clock time in the selected time zone ("ISO 8601 in Europe/Berlin"). Date and time may be separated byTor a space; seconds and fractions (with a dot or a comma) are optional. - ISO 8601 with an offset —
…Z,…+02:00, or…+0200— applies regardless of the selected zone ("ISO 8601 with offset"). The offset needs hours and minutes. - RFC 2822 / HTTP date — such as
Wed, 01 Jul 2026 10:00:00 GMT— and other text with letters and digits that your browser's date parser understands ("RFC 2822 / HTTP date"). Note: the browser evaluates this path without reference to the selected zone. If the text has no zone — sayWed, 01 Jul 2026 12:00:00orJuly 1, 2026 12:00— the time counts in your device's time zone, not the selected one. For a time in the selected zone, use ISO 8601 without an offset (2026-07-01 12:00).
If none of these match, the tool reports "Not recognized — use ISO 8601 (…), RFC 2822 or a Unix timestamp." The tool never fills the text field itself: as soon as you enter a valid value in one of the other two fields, click Now or Server, or change the language or time zone, it is cleared again.
Notes and error messages
When needed, two boxes appear above the table:
- Red (error) — the input doesn't give a valid moment; the table then keeps the last valid value. Examples: "2026-02 has 28 days — day 31 does not exist.", "Year must be between 1 and 9999.", "This time does not exist in Europe/Berlin — the clocks skip it (daylight saving time starts).", "Not a number.", "Out of range (JavaScript dates reach ±275,760 years)."
- Yellow (note) — the input is valid but ambiguous: "This time occurs twice in Europe/Berlin (clocks go back) — the first occurrence (+02:00) is used."
Server: server time and clock offset
The Server button (network icon) asks the tool server for its time via the endpoint /tools/time/mtime/ and sets the date and timestamp fields and the table to that server time (rounded down to the full second); the text field is cleared. It also compares it with your device clock — measured against the midpoint of the request and rounded to a tenth of a second — and writes the result below the timestamp field:
- "This device's clock matches the server (±N ms)." if the difference is under half a second (N is half the round-trip time of the request),
- otherwise "This device's clock is X s ahead of the server." or "… behind the server."
If the server can't be reached, a notification says "Could not reach the server."
Server endpoints
The Time Converter exposes two lean, publicly accessible text endpoints. Both respond as text/plain with Cache-Control: no-cache, must-revalidate and Pragma: no-cache:
/tools/time/time/— the current Unix timestamp in seconds (PHP'stime()), e.g.1792064051. The interface no longer uses it; it's there for your own scripts./tools/time/mtime/— the current microtime (PHP'smicrotime()) in the format fraction of a second, space, seconds, e.g.0.49530000 1792064051. This is the endpoint the Server button uses.
The "Difference" tab
This tab calculates time differences ("Calendar difference (as the clock on the wall shows it) and elapsed time — they differ across a daylight saving time change.").
Start and End
You enter two moments as date and time: Start (Zone) and End (Zone) — both as wall-clock time in the selected time zone, with the same limits as in the Convert tab (years 1 to 9999). On load, Start is set to now minus 24 hours; the Now button beside it sets it to the current moment. If End is earlier than Start, the tool still calculates and reports the direction (see below).
End = now: now (live)
Next to End sits the now (live) checkbox, ticked on load. While it's ticked, the End field is locked, shows the current time, and — like the whole result — is refreshed every second as long as the Difference tab is open. That way you watch live how long ago a moment was or how long is left until a deadline. Untick it to enter a fixed end date.
Calendar and elapsed time
Above the table sits a sentence made of the relative phrase (Start as seen from End, e.g. "23 hours ago") and the calendar difference. The table opens with the two core values:
- Calendar — the gap as the wall clock shows it, broken down into years, months, days, hours, minutes, and seconds (e.g. "10 months, 15 days, 9 hours, 30 minutes"). Months are added on the calendar; if the start day doesn't exist in a shorter month, the last day of that month counts (31 January + 1 month = 28 or 29 February).
- Elapsed — the time actually elapsed, in days, hours, minutes, and seconds (e.g. "320 days, 9 hours, 30 minutes").
Both durations are phrased in the selected language; units with a value of 0 are left out.
Totals and direction
Below these follow:
- Direction — "End is after start" or "End is before start". The values themselves are always positive.
- Months (calendar) — the number of full calendar months.
- Weeks, Days, Hours, Minutes, Seconds — each the entire gap in that single unit, based on the elapsed time (Weeks to Minutes with up to two decimal places, Seconds as a whole number), in the number format of the selected language.
Every row can be copied on its own.
Daylight saving time notice
If a clock change falls between Start and End, calendar and elapsed time drift apart: from Saturday 12:00 to Sunday 12:00 across the March change, the calendar says 1 day, but only 23 hours have elapsed. The tool then shows a blue notice: "A daylight saving time change lies in between: the wall clock moved forward by 60 minutes, so calendar and elapsed time differ." ("back" in autumn). A Start or End time that doesn't exist because of the change shows up in the red box as "Start: …" or "End: …"; a time that occurs twice is read as its first occurrence here, without a separate notice.
The global settings
Language
The Language dropdown in the card footer sets the language of the localized output: the Full, Long, Medium, and Short rows, the zone name in Time zone, Relative to now, the durations and the sentence in the Difference tab, and the number format of the totals. The list holds 68 fixed language and region codes — from ar through de, de-AT, de-CH, en-GB, en-US, fr-CA to zh-CN and zh-TW — plus your browser's languages, which sit at the top and are added if they aren't on the list already (as is a saved language). Each entry shows the name in the language itself, the English name, and the code, e.g. "Deutsch — German (de)"; where both names are the same, the name appears only once, e.g. "British English (en-GB)". The default is your browser's language. The language changes only the formatting — the moment itself stays the same, and the tool's own labels and messages remain in English.
Time zone
The Time zone dropdown sets the time zone in which input is read and results are displayed. It contains:
- every IANA time zone your browser knows, grouped by region (
Africa,America,Asia,Europe,Pacific…; zones without a region such asUTCsit underGeneral). Older names that some browsers still report are shown under their current name —Asia/Kolkatainstead ofAsia/Calcutta,Europe/Kyivinstead ofEurope/Kiev. - the Fixed offset (Etc) group with fixed offsets
Etc/GMT-14toEtc/GMT+12(no daylight saving time).
Each entry is labeled with its current UTC offset, and your device's zone additionally with "— this device", e.g. Europe/Berlin (UTC+02:00) — this device. In the list, underscores in zone names appear as spaces (America/New York). The default is your device's time zone; the Mine button (location pin) next to the field switches back to it at any time.
Important: the Etc/GMT zones follow the POSIX sign convention and are therefore sign-inverted relative to the usual UTC notation — Etc/GMT+1 is actually UTC**−1, and Etc/GMT-1 is UTC+**1. That's why the tool labels them with the real offset (Etc/GMT+1 (UTC-01:00)). More on that in the tips & tricks.
What happens when you switch zones depends on the tab: the Convert tab keeps the moment (same timestamp; date and time jump to the new zone), while the Difference tab keeps the wall-clock times you entered and reads them again in the new zone.
Stored settings
The tool remembers language and time zone in your browser's localStorage (key jpktools_time) and restores them on your next visit. It doesn't store the dates or timestamps you enter.
Operating limits and privacy
- Client-side: conversion, comparison, and formatting run entirely in the browser via the Intl API. The values you enter never leave it.
- Single server interaction: the Server button calls
/tools/time/mtime/and receives only the server time back; no user data is transmitted. - Timestamp units: seconds up to 11 digits, beyond that milliseconds, microseconds, and nanoseconds. Seconds values with 12 or more digits (after roughly the year 5138) are inevitably read as milliseconds.
- Year range: date fields and ISO text accept the years 1 to 9999; via a timestamp you reach the full JavaScript range, in which case the output shows the extended ISO year form and the date field stays empty. Right at the edges of this range, some output rows show
NaN: in the first year, −271821, the ISO week · day of year row, and in the first or last hours, depending on the zone's offset, also the zone's ISO 8601 row, RFC 2822 (e-mail), and Time zone. - Time zones and languages come from your browser — an older browser may not know every zone or may phrase durations a little more simply.
- Stored are only language and time zone (
localStorage).
For the introduction and target audiences see the overview page. Concrete walkthroughs are in the examples, strategy and pitfalls in the tips & tricks. You can try everything directly in the tool.