Part I · How it works
10.3 Time zones, UTC and daylight saving
alsotimezonetime zonetime zonesutcdstdaylight savingdaylight saving timetztzdatalocaltime/etc/localtimeset timezonegmt
TL;DR
- The kernel counts time in UTC. Time zones are applied when time is
displayed, by the C library, from the rules in
/etc/localtime. - Each process can use another zone:
TZ=Asia/Tokyo date. - Store and compute in UTC; convert to local time only to show it.
timedatectl set-timezone Europe/Paris
TZ=America/New_York date
date -u # UTC
On your machine
$ atfq 10.3 Zone Europe/Paris RTC the hardware clock keeps UTC Source tsc (also available: hpet, acpi_pm) Sync systemd-timesyncd, synchronised Booted 2026-10-11 06:26 UTC
An example: Alice's laptop, one of the test machines. In your terminal, this block shows your own machine, read live.
Pitfalls
- When clocks go back, a local time like 02:30 happens twice; when they go forward, it doesn't happen at all. Jobs scheduled then may run twice or be skipped: schedule them outside 01:00–03:00, or in UTC.
- A day isn't always 24 hours, in local time: add days with a date
library, not
+ 86400. - Zone rules change by law, sometimes at short notice: keep
tzdataupdated, and use names likeEurope/Paris, not offsets like+01:00. - Dual boot with Windows: Windows keeps the hardware clock in local time, Linux in UTC, so one of them shows the wrong hour.
Deep dive 2 questions
What is in a zone file?
The zone's history: every change of offset and of daylight saving rules
since records began, compiled from the IANA time zone database. That's
why converting a date from 1975 in Europe/Paris gives the offset in use
then, and why Europe/Paris and "UTC+1" aren't the same thing.
What's the difference between UTC and GMT?
GMT is a time zone (Britain in winter). UTC is the reference timescale, kept by atomic clocks, with leap seconds added so it stays close to the Earth's rotation (10.4). For everyday use they show the same time.