# timedatectl — Manage System Time, Time Zone and NTP with systemd

> View and set the system clock, time zone and automatic time synchronization (NTP) on systemd-based Linux systems with timedatectl.

Source: https://www.jpkc.com/db/en/cheatsheets/shell-system/timedatectl/

<!-- PROSE:intro -->
`timedatectl` is the central systemd tool for controlling the system clock, time zone and automatic time synchronization on a Linux machine. Run without arguments, it gives you local and UTC time, the configured time zone and the NTP status at a glance. With `set-timezone` and `set-ntp` you adjust both persistently, without editing configuration files by hand. An accurate clock is more than cosmetic: if it drifts, TLS certificates fail to validate, cron jobs misfire and log correlation falls apart.
<!-- PROSE:intro:end -->

## Status & Info

`timedatectl` — Show current time, timezone, and NTP status.

```bash
timedatectl
```

`timedatectl status` — Show detailed time and date status (same as no args).

```bash
timedatectl status
```

`timedatectl show` — Show properties in machine-readable format.

```bash
timedatectl show
```

`timedatectl timesync-status` — Show NTP synchronization details (server, offset, delay).

```bash
timedatectl timesync-status
```

## Time Zone

`timedatectl list-timezones` — List all available time zones.

```bash
timedatectl list-timezones
```

`timedatectl list-timezones | grep <region>` — Search for a time zone.

```bash
timedatectl list-timezones | grep Berlin
```

`timedatectl set-timezone <timezone>` — Set the system time zone.

```bash
sudo timedatectl set-timezone Europe/Berlin
```

`timedatectl set-timezone UTC` — Set the time zone to UTC.

```bash
sudo timedatectl set-timezone UTC
```

## Set Time & Date

`timedatectl set-time '<datetime>'` — Set the system date and time manually.

```bash
sudo timedatectl set-time '2026-03-19 14:30:00'
```

`timedatectl set-time '<date>'` — Set the date only.

```bash
sudo timedatectl set-time '2026-03-19'
```

`timedatectl set-time '<time>'` — Set the time only.

```bash
sudo timedatectl set-time '14:30:00'
```

## NTP & Sync

`timedatectl set-ntp true` — Enable automatic time synchronization via systemd-timesyncd (NTP).

```bash
sudo timedatectl set-ntp true
```

`timedatectl set-ntp false` — Disable NTP (required before manual time set).

```bash
sudo timedatectl set-ntp false
```

<!-- PROSE:outro -->
## Conclusion

For everyday work three commands usually suffice: `timedatectl` for the status, `set-timezone Europe/Berlin` for the right time zone, and `set-ntp true` so systemd-timesyncd keeps the clock in sync automatically. Every `set-*` action writes to system state and therefore needs `sudo`; the tool also assumes a systemd-based system. Setting the time manually with `set-time` only works while NTP is disabled (`set-ntp false`) – and is usually the worse choice. Keep in mind that a clock running wrong is no minor detail: it makes TLS certificates fail, corrupts log timestamps and can completely break time-based authentication such as Kerberos or TOTP.

## Further Reading

- [Arch Wiki: System time](https://wiki.archlinux.org/title/System_time) – thorough reference on the system clock, time zones and NTP on Linux
- [systemd docs: timedatectl(1)](https://www.freedesktop.org/software/systemd/man/latest/timedatectl.html) – official manual page with every subcommand and option
<!-- PROSE:outro:end -->

## Related Commands

- [hostnamectl](https://www.jpkc.com/db/en/cheatsheets/shell-system/hostnamectl/) – manage the hostname and machine metadata through systemd
- [systemctl](https://www.jpkc.com/db/en/cheatsheets/shell-system/systemctl/) – control and inspect systemd services such as systemd-timesyncd
- [journalctl](https://www.jpkc.com/db/en/cheatsheets/shell-system/journalctl/) – query and filter the systemd journal with timestamps

