English

Developer tools · Unix timestamp converter

UTC, GMT and TAI: which one your timestamp is actually counting

· Background

timestamps unix-time time-zones

Three parallel time-scale tracks with the Unix conversion track highlighted
Original ToolAcre vector illustration

GMT, UTC and TAI are often treated as synonyms, but they are three different things with different histories. This post explains each one and which of them Unix time and everyday converters actually follow.

Three names on one server — GMT in the Date header, UTC in the logs and TAI in a research paper, all for the same second

A server can show “GMT” in one protocol, “UTC” in logs and another time scale in scientific data. Similar clock labels do not grant interchangeability. The first task is to identify the contract behind each field rather than renaming everything UTC in a presentation layer.

ToolAcre’s contract is explicit: Unix seconds or milliseconds become an ISO 8601 UTC string, a readable UTC row and a browser-local row. It has no scale selector. Any non-Unix count must be transformed using its own authoritative definition before this route is relevant.

A useful inventory records scale and serialization beside every field. Similar labels should not erase provenance, particularly when data crosses scientific and application systems.

Greenwich Mean Time — mean solar time at a meridian, its history as the world's reference, and why it is now a time zone rather than a standard

The outline offered a history of Greenwich Mean Time and modern legal usage. Those facts are not present in the converter configuration, source or tests. This article therefore does not turn a code repository into a historical citation by inference.

Operationally, if an input says GMT, inspect the defining protocol. A clock label that appears equivalent for ordinary application dates can still carry specific grammar or policy requirements. ToolAcre outputs UTC labels and should not be presented as a GMT parser or formatter.

If interoperability depends on the term, link the controlling specification in code review. A display label should never silently stand in for a wire-format requirement.

GMT history and legal status are outside the repository evidence

The UTC row is generated by `Intl.DateTimeFormat` with `timeZone: "UTC"`; the ISO row comes from `toISOString()`. Those calls prove how this interface labels its universal reading. They do not document when UTC was adopted or the institutional mechanism behind it.

For debugging, the label is enough to establish a shared reference independent of the current local zone. Compare ISO strings or epoch values between systems. If a source uses another scale, first prove the relationship rather than assuming a familiar date means identical counting.

Canonical UTC output is especially useful for comparing environments because it removes local-zone selection. It does not, however, convert an input from an undeclared time scale.

The converter labels UTC but does not document the history of UTC’s definition

International Atomic Time is not represented in the code, configuration or tests. No current offset, historical gap or conversion algorithm appears here. Supplying such a constant from memory would be exactly the kind of subtle time claim the task forbids.

Preserve a TAI-labelled value as TAI until an authoritative library or source performs the conversion for its date. Pasting it directly as Unix seconds applies the wrong origin or scale silently and can still yield a polished ISO string. Readability is not validation.

An external conversion should include the scale name in variable and type names. Erasing that label before arithmetic makes a later plausible ISO result impossible to audit.

TAI is not implemented, so no gap or conversion constant is asserted

The tested Unix model advances from epoch value 1,483,228,799 at `2016-12-31T23:59:59Z` to 1,483,228,800 at midnight. It has no distinct input for `23:59:60`. That is the concrete meaning of the POSIX-style behavior in this implementation.

It is reasonable to say the converter maps Unix counts onto UTC-labelled civil output under that rule. It would be misleading to call the integer an exact atomic-seconds count across every historical leap. The tool makes a software date, not a laboratory time-scale measurement.

The distinction is subtle but practical: sequence calculations inherit the Unix convention, while civil display inherits Date and Intl formatting. Neither path exposes atomic-time metadata.

The tested Unix model maps POSIX-style seconds into UTC labels without a leap-second value

The workbook’s examples of HTTP and British legal time require external protocol and legal sources. They are omitted. When implementing a header or regulated record, follow the actual specification rather than choosing UTC or GMT wording based on colloquial equivalence.

Within this module, `GMT` may appear as part of Intl’s short-offset rendering for zero offset, but that is formatter output, not a promise to generate a protocol date. Keep UI display separate from wire-format serialization and legal terminology.

A formatter returning a zero-offset label is not sufficient protocol validation. Test the full serialized header or regulated record with its dedicated parser and fixtures.

Protocol and legal uses of GMT require external sources and are omitted

GPS time and astronomical date scales are outside the accepted modes. The UI offers seconds, milliseconds or automatic detection only, and both supported units assume the Unix epoch. There is no checkbox that changes origin or leap convention.

A number from another scale should carry a label through ingestion and storage. Convert with a purpose-built, sourced method and retain the original. Only the derived Unix value belongs in this panel; otherwise a plausible result can conceal a foundational mismatch.

Rejecting an unsupported scale is safer than offering a guessed constant. Time-scale offsets can be date-sensitive, and false precision here can reorder scientific observations.

GPS and astronomical scales are not accepted modes

Say UTC when referring to ToolAcre’s universal row because that is what the source requests and the UI labels. Say Unix seconds or milliseconds for the numeric input. Avoid broad statements that collapse UTC, GMT and atomic time into synonyms.

Precision in naming is a debugging tool. It identifies which transformations are required and which claims remain unverified. This converter provides strong evidence for one path—Unix count to UTC/local display—and intentionally offers none for unrelated scales.

When writing documentation, attach each term to a concrete field or formatter. Vague claims that all three “mean the same time” conceal the exact conversion responsibilities.