Document Workflow

Build a UTC incident timeline from Unix timestamps

Correlate Unix timestamps from services, queues, databases, and browser reports into one reviewable UTC incident timeline without losing precision.

Written and tested by Published: Reviewed:

How this workflow was checked

For the Unix Timestamp Converter review, we preserved the source shown in “Correlate event, receive, and commit times” and completed “Label each clock and timestamp meaning” and “Sort within comparable clock domains”. The produced output was compared literally where possible, with “Sorting different timestamp meanings as one series” and “Dropping precision after conversion” checked against the linked failure evidence.

The timeline preserved 00:00:00.123000, .128000, and .132456 UTC in order and labeled their different clocks instead of pretending the three values had identical precision or meaning.

Problem

Distributed incident evidence rarely shares one clock or one unit. An application can record epoch seconds, a browser can send milliseconds, a database can commit microseconds, and a trace collector can receive nanoseconds. Fields called created_at, sent_at, received_at, and indexed_at may describe different stages of the same event, while server clock skew and network delay can reverse their apparent order. Converting everything to a readable date is only the first step: a defensible timeline must keep the exact epoch value, source system, semantic field, UTC normalization, precision, and uncertainty together. It must also distinguish recorded order from proven causal order and use local time only as a labeled translation for user evidence.

Sources and standards

These authoritative references define the formats or security boundaries used in this workflow. Tool-specific verification is documented separately above.

When to use this

  • An incident spans application logs, a queue, a database, an API gateway, and browser or mobile evidence.
  • The same request has event, send, receive, commit, and ingest timestamps that must not be treated as one field.
  • Two events share the same millisecond date display but have different microsecond or nanosecond ordering.
  • A user reports a local clock time that must be compared with UTC backend evidence and daylight-saving rules.
  • You need a ticket or postmortem table that records uncertainty instead of presenting a guessed sequence as fact.

Steps

  1. Step 1

    Define the incident window and anchor

    Choose a known UTC anchor such as a deploy, gateway response, database transaction, or monitored alert. Record its source and confidence before adding less certain events.

  2. Step 2

    Label each clock and timestamp meaning

    For every value, record the producer and whether it represents event creation, client send, server receive, database commit, queue acknowledgement, or later ingestion. Do not merge these meanings into a generic time column.

  3. Step 3

    Confirm each source unit

    Use schema or code documentation for seconds, milliseconds, microseconds, or nanoseconds. If a copied excerpt mixes units, use Auto and review each result; otherwise choose one explicit unit for the source batch.

  4. Step 4

    Normalize to UTC while retaining exact epoch

    Convert the bounded excerpts and place ISO UTC beside the original exact epoch string. Do not discard sub-millisecond digits just because multiple events share the same .123Z date display.

  5. Step 5

    Sort within comparable clock domains

    Exact epoch values can order events generated by a sufficiently synchronized clock. Across different hosts, note NTP status, known drift, client clock quality, and network delay before treating a small difference as meaningful.

  6. Step 6

    Compare transport and protocol evidence

    Use HTTP Date, Age, cache, request ID, and tracing headers when available, and keep queue or database sequence evidence beside timestamps. These fields can support or challenge the proposed order without making timestamps causal proof.

  7. Step 7

    Translate for users only after the UTC review

    Keep the technical timeline in UTC. Add the converter's named browser-local IANA zone as a separate column when matching a screenshot or report, and record the zone rather than writing an unlabeled local clock time.

Example

Correlate event, receive, and commit times

Input

client sent_at=1704067200123 (milliseconds)
gateway received_at=1704067200.128 (seconds)
database committed_at=1704067200132456 (microseconds)
trace indexed_at=1704067200139000000 (nanoseconds)

Output

00:00:00.123000Z | client send | client clock; verify skew
00:00:00.128000Z | gateway receive | server clock
00:00:00.132456Z | database commit | exact microseconds
00:00:00.139000Z | trace ingest | collector time
Observed order is consistent, but cross-host timestamps alone do not prove causality.

Common mistakes

Sorting different timestamp meanings as one series

An event creation time and a collector ingest time measure different stages. Label semantics before sorting or the timeline can attribute network and queue delay to the wrong component.

Dropping precision after conversion

Two exact events can collapse to the same ISO millisecond. Keep microsecond or nanosecond epoch values in the timeline when their source supports that precision.

Ignoring clock skew between hosts

A 20 ms timestamp lead does not prove one server acted first if clocks can differ by 100 ms. Record synchronization evidence and an uncertainty band.

Using relative labels as forensic measurements

Labels such as about 2 months ago are convenience summaries based on approximate month and year lengths. Use exact UTC instants and numeric differences for incident analysis.

Replacing UTC evidence with an unlabeled local time

Local time depends on an IANA zone and daylight-saving date. Keep UTC as the canonical timeline and identify every local translation by zone.

FAQ

Can timestamps prove which distributed event caused another?

Not by themselves. They show recorded times subject to clock quality and field semantics. Request IDs, sequence numbers, traces, transaction ordering, and protocol evidence are needed to support causal claims.

Should I sort by event time or ingest time?

Keep both when available. Event time describes when the producer says the action occurred; ingest time describes when another system observed it. The difference can reveal transport delay or clock skew.

Why keep exact epoch values beside ISO UTC?

ISO output displays milliseconds. Exact epoch strings preserve microsecond and nanosecond order and make the original unit and precision auditable.

How should I handle a user's local-time screenshot?

First establish the UTC event. Then translate it with the correct IANA time zone and date-specific daylight-saving rule, and label both UTC and local columns.

Is the converter's relative time suitable for an SLA calculation?

No. Relative month and year labels are approximate and move with the current time. Calculate an exact difference from epoch or UTC values for an SLA or latency measurement.

How much incident evidence can I paste at once?

Each conversion is bounded to 200,000 UTF-8 bytes, 200 lines, and 100 timestamp candidates. Split a larger incident by source or time window and retain a stable source label for every batch.