Confluence ↔ Jira – Interoperability of regional time zones and date conversion
0 reputation · 03 Nov 2021, 09:23 UTC
0 reputation · 03 Nov 2021, 09:23 UTC
Confluence stores all timestamps in UTC and renders them in the viewer’s timezone preference. The Date macro and Jira issue links both apply the current user’s timezone when displaying dates, but they do not retroactively adjust historical values when a user changes their timezone setting.
When a user switches time zones, the page history and linked Jira issue dates remain unchanged in the database, yet the web UI shows different local times. This can create inconsistencies between what is recorded in Confluence’s audit logs and what users see when revisiting old content.
The key unresolved question is whether there is a supported mechanism to audit or re‑render these historical dates after a timezone change, and if not, what custom approach could be used to maintain consistency across Confluence and Jira.
Specifically:
There is no supported API or configuration that triggers re-rendering of historical timestamps in Confluence or linked Jira issues after a user changes their timezone preference. This is expected behavior: both products store timestamps in UTC and convert them to the viewer's local time at render time. Stored values are never rewritten when a preference changes.
Confluence and Jira persist date fields in UTC. When content is displayed, the application applies the current user's timezone preference to produce the local time shown in the UI. Page history, comments, and Jira issue links do not store a separate "rendered local time" snapshot; they reference the UTC instant. Changing your profile timezone therefore affects how future requests render that value, but it does not alter history or the database.
Because rendering is deterministic from the stored UTC value plus the viewer's current timezone, a mismatch between an old screenshot or audit log entry and a current page view is a rendering-time difference, not data corruption.
A custom plugin can audit correctness for the active session by reading the current user's timezone preference, retrieving the stored UTC timestamp via the REST API, and verifying that the rendered output matches the expected offset. For example, /rest/api/content/{id} returns timestamps in UTC regardless of profile settings. A plugin can compare that value against the user's IANA timezone to confirm the UI is applying the right offset.
However, a plugin cannot audit "historical rendered local times" because those values were never persisted. There is no stored artifact to compare against. Any audit is limited to validating that the current rendering pipeline is correct.
Attempting to re-render history by rewriting stored timestamps to local time would introduce severe risks on a large instance:
/rest/api/content/{id} and inspect the history.createdDate or version.when fields; verify they remain in UTC.Version note: The behavior above reflects the long-standing UTC storage model in recent Confluence and Jira releases. Exact REST field names and profile setting labels can vary by version and deployment type, so confirm against your instance's API documentation.
If your goal is to reconcile Confluence audit logs against rendered page dates, confirm whether your audit log exporter writes timestamps in UTC or local time. That determines whether you need a conversion layer in your reporting pipeline rather than a re-rendering mechanism in Confluence.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.