Home Learn Linux Step-by-step guide to adjusting your Linux hardware clock

Step-by-step guide to adjusting your Linux hardware clock

This comprehensive guide walks you through the process of changing the hardware clock in Linux. It provides step-by-step instructions and examples, covering various commands and tools to adjust and synchronize your system's hardware clock, ensuring accurate timekeeping for your Linux machine.

by Arun Kumar
change hardware clock linux

Navigating the intricacies of Linux can be both a challenge and a joy. As someone who has spent countless hours tweaking and tuning systems, I’ve developed a certain fondness for the granular control Linux offers. Today, we’re diving into a task that’s often overlooked but crucial: changing the hardware clock in Linux. This guide aims to be both informative and easy to follow, sprinkled with my personal experiences and preferences.

Understanding the hardware clock

Before we dive into the commands and syntax, let’s understand what the hardware clock is. Also known as the Real Time Clock (RTC), it’s a battery-powered clock on your computer’s motherboard. This clock keeps time even when the system is powered off. Linux, like other operating systems, reads this clock during boot and uses it to set the system clock.

Why is it important?

The accuracy of your hardware clock is vital for file timestamps, cron jobs, and system logs. Incorrect time settings can lead to confusing results and errors in these areas.

Checking the current hardware clock time

Let’s start by checking the current hardware clock time. Open your terminal and use the hwclock command:

sudo hwclock --show

This command will display the current hardware clock time. It’s my go-to command whenever I suspect time discrepancies on my system.

Example output

2020-09-01 10:15:45.123456-05:00

This output shows the time, date, and time zone offset.

Setting the hardware clock

Now, to the main event: setting the hardware clock.

The syntax

The basic syntax for setting the hardware clock is:

sudo hwclock --set --date="YYYY-MM-DD HH:MM:SS"

Replace YYYY-MM-DD HH:MM:SS with your desired date and time.

Example command

sudo hwclock --set --date="2023-11-19 08:30:00"

This command sets the hardware clock to 8:30 AM on November 19, 2023.

A note of caution

Be careful when setting the hardware clock. Incorrect settings can lead to system issues, especially with time-sensitive applications. I always double-check the time and date before hitting enter.

Syncing hardware clock with system time

Often, you’ll want to sync the hardware clock with your system time.

The command

sudo hwclock --systohc

This command sets the hardware clock to match the system time. I find this especially useful after daylight saving changes or when moving between time zones.

Dealing with time zones

Linux systems can use either local time or UTC for the hardware clock. This setting is crucial for dual-boot systems.

Checking the current time zone setting

Use timedatectl to check the current setting:

sudo timedatectl

Look for RTC in local TZ: yes or no in the output.

Setting the time zone

To set the hardware clock to use local time, use:

sudo timedatectl set-local-rtc 1 --adjust-system-clock

To revert to UTC, use:

sudo timedatectl set-local-rtc 0 --adjust-system-clock

I prefer using UTC on my systems to avoid confusion, especially when working with servers across different time zones.

Additional considerations

Dual-booting with Windows

In a dual-boot scenario with Windows, it’s crucial to ensure both operating systems agree on the time standard. Windows typically uses local time, while Linux prefers UTC.

Aligning Linux with Windows

If you’re dual-booting with Windows, you might want to set Linux to use local time:

sudo timedatectl set-local-rtc 1

Dealing with daylight saving time

Daylight saving time can be a headache. Ensure your Linux system adjusts correctly by having the correct timezone set and syncing regularly.

Syncing after daylight saving changes


sudo hwclock --systohc

This will update the hardware clock to the correct time after a daylight saving change.

Troubleshooting common issues

Hardware clock not keeping time

If your hardware clock is losing time or not keeping it accurately, it might be a hardware issue, often a dying CMOS battery on the motherboard.

Time discrepancies in a network

If you’re managing multiple Linux systems, time discrepancies can cause issues. Consider using NTP (Network Time Protocol) to keep all systems in sync.

Quick reference summary

Here’s a table featuring some useful commands related to managing the hardware clock in Linux. This table is designed to provide quick reference and easy understanding. As required, don’t forget to use ‘sudo’ along with the commands.

Command Description
hwclock --show Displays the current hardware clock time.
hwclock --set --date="YYYY-MM-DD HH:MM:SS" Sets the hardware clock to a specified date and time. Replace YYYY-MM-DD HH:MM:SS with your desired values.
hwclock --systohc Syncs the hardware clock with the current system time.
hwclock --hctosys Sets the system time from the hardware clock.
timedatectl Displays the current time settings, including whether the RTC is in local time or UTC.
timedatectl set-local-rtc 1 --adjust-system-clock Sets the hardware clock to use local time.
timedatectl set-local-rtc 0 --adjust-system-clock Sets the hardware clock to use UTC.
date Displays the current system date and time.
date MMDDhhmm[[CC]YY][.ss] Sets the system date and time. Replace MMDDhhmm[[CC]YY][.ss] with your desired values.
timedatectl list-timezones Lists all available time zones.
timedatectl set-timezone <Your_Timezone> Sets the system time zone. Replace <Your_Timezone> with your desired time zone.
ntpdate -u <NTP_Server> Synchronizes the system time with a specified NTP server. Replace <NTP_Server> with your chosen NTP server address.

Frequently Asked Questions (FAQs) on changing the hardware clock in Linux

Here’s a section addressing some common questions about managing the hardware clock in Linux. These are based on my experiences and the usual queries I’ve encountered over the years.

Q1: What is the difference between the hardware clock and the system clock in Linux?

  • A: The hardware clock (RTC) is a battery-powered clock on the motherboard that runs even when the system is off. The system clock, on the other hand, is a software clock maintained by the operating system and is reset at each boot based on the hardware clock or other time sources.

Q2: How do I check if my hardware clock is set to UTC or local time?

  • A: Use the command timedatectl. It will display information about the system and hardware clocks, including whether the RTC is set to local time or UTC.

Q3: Why would I need to change the hardware clock?

  • A: You might need to change it if you notice that timestamps on files, scheduled jobs, or logs are incorrect, especially after reboots or power outages. It’s also a common task when setting up a dual-boot system with Windows.

Q4: Is it safe to change the hardware clock frequently?

  • A: Generally, it’s safe, but frequent changes are unnecessary and could be symptomatic of other issues, like a failing CMOS battery. Also, constant changes can cause issues with some time-sensitive applications.

Q5: Can changing the hardware clock affect other systems on my network?

  • A: Directly, it won’t affect other systems. However, if you’re running a server or networked services that rely on time synchronization, incorrect settings can lead to issues with time-dependent processes or logs across the network.

Q6: How can I ensure my Linux system maintains accurate time?

  • A: For most users, the best approach is to enable NTP (Network Time Protocol) services. This keeps your system clock synchronized with internet time servers, minimizing drift and ensuring accuracy.

Q7: What should I do if my hardware clock keeps losing time?

  • A: This is often a sign of a failing CMOS battery on the motherboard. Replacing the battery usually resolves this issue.

Q8: How can I sync my hardware clock with an NTP server?

  • A: First, ensure NTP is enabled (timedatectl set-ntp true). Then, you can use ntpdate followed by the NTP server address to manually sync, though typically, the system handles this automatically once NTP is enabled.

Q9: Do I need to worry about daylight saving time with my hardware clock?

  • A: If your system clock is set to automatically update (such as with NTP and the correct timezone settings), daylight saving adjustments should be handled automatically. However, if you’re manually managing your time settings, you’ll need to adjust for daylight saving time as needed.

Q10: Can I use the hardware clock for time-sensitive applications?

  • A: While the hardware clock is crucial for maintaining time, it’s not recommended for high-precision time-sensitive applications. Instead, use the system clock synchronized with NTP for better accuracy.


Managing the hardware clock in Linux is an essential skill that balances system accuracy and operational efficiency. From understanding the difference between the hardware and system clocks to executing precise commands for time adjustments, this guide has covered the key aspects and nuances of time management in Linux. The added FAQ section aims to address common queries, further simplifying what might seem like a daunting task.

I hope this guide has been helpful. If you’ve got questions, experiences, or anecdotes about your adventures with Linux time settings, feel free to share them in the comments!

You may also like

Leave a Comment



FOSS Linux is a leading resource for Linux enthusiasts and professionals alike. With a focus on providing the best Linux tutorials, open-source apps, news, and reviews written by team of expert authors. FOSS Linux is the go-to source for all things Linux.

Whether you’re a beginner or an experienced user, FOSS Linux has something for everyone.

Follow Us


©2016-2023 FOSS LINUX



“Linux” is the registered trademark by Linus Torvalds in the U.S. and other countries.