The time zone, and setting the clock by hand
The clock always runs in UTC. The time zone is how the time is shown:
the offset from UTC, and when summer time starts and ends, for one place.
The machine has a default time zone. Programs can show time in another
zone: use date -u
for UTC, or env for a
one-command TZ override in programs that honor it.
Before changing the machine's default, inspect clock status and
clock sources: a wrong zone changes the display, while
an unsynchronised clock needs a source or manual-time correction. Inspect
the reported zone and any timed errors rather than assuming a saved choice
took effect. An unexpected UTC report can also mean that timed could not
identify the existing file; see the terminal checks.
To choose a 12- or 24-hour display for your own top-bar clock, use Desktop Settings' Time Format.
In System Settings #
System Settings, from the launcher, has the machine's time in its Time & Date section. A choice from a list or a switch applies the moment it is made; one that can't be is put back, and the line along the bottom of the window says why.
- At the top is the time here, the zone and how far it is from UTC, and whether the clock is synchronised, and with which time server.
- Time Zone lists the zones by region and chooses the machine's default. The desktop's clock shows the chosen zone from the next minute. UTC takes it away.
- Set Time Automatically is on until you turn it off. Then a date and a time open under it, in the zone chosen, with Set Clock. Turning the switch on again goes back to the time servers. It starts them afresh and can jump the clock by any size when sources agree. Plan for the effect on timers, file timestamps and log ordering before switching it on.
- Time Servers are where the time comes from: Change… opens the list under its row, and Allow Unauthenticated Servers, Use Network Time Servers and the minimum and maximum poll intervals apply as they are changed. See configuring time sources. Server Status lists each server: whether it is in use, a candidate, or rejected, whether it is authenticated (NTS), its offset, and when it was last heard.
Changing the settings needs write access to Machine\System\Time, which
as shipped only Administrators have. Anyone else sees all of it, and the
section says once, at the top, why they can't change it. Asking timed to
set the clock or reload separately needs its control right, granted by
default to SYSTEM and Administrators. The control
descriptor and the
registry key's write permissions are separate checks.
After a change, check the zone and synchronisation shown at the top, and Server Status when using automatic time. A saved setting is not proof that a source has been accepted or that the clock has synchronised.
In a terminal #
The time zone is Machine\System\Time TimeZone, a name from the tz
database such as Europe/London, America/New_York or Asia/Kolkata:
$ reg set Machine/System/Time TimeZone sz:Europe/London
$ clock status | head -2
generation 12
time zone Europe/London
timed applies the chosen zone to /etc/localtime after observing the
registry change. A name that isn't a zone on this machine is refused
before the copy and logged, leaving the
previous file in place. On restart, timed identifies that previous zone
only when its saved name and the installed zone file still match the copy.
In the inspected timed 0.1.10 source,
an unidentified existing zone file is reported as UTC; see the status
limitation. timed tries a refused
name again every ten minutes and whenever the time settings change, so a zone that a tzdata update adds is taken up
without setting the value again. Deleting the value requests UTC.
If status unexpectedly shows UTC after a restart or a failed zone change, inspect timed's log for zone-copy or saved-name errors before setting a local time. The zone file must already have been prepared by timed's pre-start hook; a failed write is not the same as an invalid zone name. An error after the file was truncated can leave it incomplete, even while status retains the previous name. Do not treat that name as a fresh check of the file after a write failure.
The names are the files under /usr/share/zoneinfo, from the tzdata
package. zone1970.tab there lists the ones worth choosing between, one
per region whose clocks have agreed since 1970.
To set the clock yourself, first inspect the zone reported by clock status and resolve an unexpected UTC report or zone-copy errors as above.
You need registry write access to turn automatic time off and
timed's control right to set the clock. A manual set is a jump: plan for
its effect on timers, file timestamps and log ordering before proceeding.
Then turn off setting it automatically and ask timed:
$ reg set Machine/System/Time Automatic dword:0
$ clock set 2026-10-04 14:05
the clock is set
clock set takes a local time, in the machine's zone. timed refuses while
Automatic is 1, since its next poll would put the clock back. Inspect
clock status after the set: check the reported zone and the
Automatic is 0: the clock is set by hand indication. Manual time is not
network synchronisation.
Setting Automatic to 1 again starts the time servers afresh. Once
usable sources agree, the initial correction can be of any size. Plan
for that clock jump before re-enabling automatic time. Afterwards, run
clock status and clock sources and check the selected sources,
authentication, state, accuracy and fresh updates. Re-enabling the setting
does not itself prove synchronisation.
Why not just set the clock? #
Administrators hold SeSystemtimePrivilege, so date -s would set the
clock. timed would then measure the clock as wrong by that much and put it
back, and if it was more than 1000 seconds after timed had been keeping
the clock, it would refuse to follow its own sources and log it as a
problem. Asking timed is what keeps the two in agreement.
A clock set by hand is written to the hardware clock within eleven minutes, so it survives a reboot.
Asking timed also leaves a record. Each set is a timed.clock.stepped
event with operation.name manual, the clock's reading just before and
just after, and the SID of whoever asked in subject.token.sid. date -s
leaves none: the clock moves underneath every record without anything
saying so.