Chapter 3. Configuring the Date and Time Modern operating systems distinguish between the following two types of clocks: A real-time clock ( RTC ), commonly referred to as a hardware clock , (typically an integrated circuit on the system board) that is completely independent of the current state of the operating system and runs even when the computer is shut down. A system clock , also known as a software clock , that is maintained by the kernel and its initial value is based on the real-time clock. Once the system is booted and the system clock is initialized, the system clock is completely independent of the real-time clock. The system time is always kept in Coordinated Universal Time ( UTC ) and converted in applications to local time as needed. Local time is the actual time in your current time zone, taking into account daylight saving time ( DST ). The real-time clock can use either UTC or local time. UTC is recommended. Red Hat Enterprise Linux 7 offers three command line tools that can be used to configure and display information about the system date and time: The timedatectl utility, which is new in Red Hat Enterprise Linux 7 and is part of systemd . The traditional date command. The hwclock utility for accessing the hardware clock. 3.1. Using the timedatectl Command The timedatectl utility is distributed as part of the systemd system and service manager and allows you to review and change the configuration of the system clock. You can use this tool to change the current date and time, set the time zone, or enable automatic synchronization of the system clock with a remote server. For information on how to display the current date and time in a custom format, see also Section 3.2, "Using the date Command" . 3.1.1. Displaying the Current Date and Time To display the current date and time along with detailed information about the configuration of the system and hardware clock, run the timedatectl command with no additional command line options: This displays the local and universal time, the currently used time zone, the status of the Network Time Protocol ( NTP ) configuration, and additional information related to DST. Example 3.1. Displaying the Current Date and Time The following is an example output of the timedatectl command on a system that does not use NTP to synchronize the system clock with a remote server: Important Changes to the status of chrony or ntpd will not be immediately noticed by timedatectl . If changes to the configuration or status of these tools is made, enter the following command: 3.1.2. Changing the Current Time To change the current time, type the following at a shell prompt as root : Replace HH with an hour, MM with a minute, and SS with a second, all typed in two-digit form. This command updates both the system time and the hardware clock. The result it is similar to using both the date --set and hwclock --systohc commands. The command will fail if an NTP service is enabled. See Section 3.1.5, "Synchronizing the System Clock with a Remote Server" to temporally disable the service. Example 3.2. Changing the Current Time To change the current time to 11:26 p.m., run the following command as root : By default, the system is configured to use UTC. To configure your system to maintain the clock in the local time, run the timedatectl command with the set-local-rtc option as root : To configure your system to maintain the clock in the local time, replace boolean with yes (or, alternatively, y , true , t , or 1 ). To configure the system to use UTC, replace boolean with no (or, alternatively, n , false , f , or 0 ). The default option is no . 3.1.3. Changing the Current Date To change the current date, type the following at a shell prompt as root : Replace YYYY with a four-digit year, MM with a two-digit month, and DD with a two-digit day of the month. Note that changing the date without specifying the current time results in setting the time to 00:00:00. Example 3.3. Changing the Current Date To change the current date to 2 June 2017 and keep the current time (11:26 p.m.), run the following command as root : 3.1.4. Changing the Time Zone To list all available time zones, type the following at a shell prompt: To change the currently used time zone, type as root : Replace time_zone with any of the values listed by the timedatectl list-timezones command. Example 3.4. Changing the Time Zone To identify which time zone is closest to your present location, use the timedatectl command with the list-timezones command line option. For example, to list all available time zones in Europe, type: To change the time zone to Europe/Prague , type as root : 3.1.5. Synchronizing the System Clock with a Remote Server As opposed to the manual adjustments described in the sections, the timedatectl command also allows you to enable automatic synchronization of your system clock with a group of remote servers using the NTP protocol. Enabling NTP enables the chronyd or ntpd service, depending on which of them is installed. The NTP service can be enabled and disabled using a command as follows: To enable your system to synchronize the system clock with a remote NTP server, replace boolean with yes (the default option). To disable this feature, replace boolean with no . Example 3.5. Synchronizing the System Clock with a Remote Server To enable automatic synchronization of the system clock with a remote server, type: The command will fail if an NTP service is not installed. See Section 18.3.1, "Installing chrony" for more information. 3.2. Using the date Command The date utility is available on all Linux systems and allows you to display and configure the current date and time. It is frequently used in scripts to display detailed information about the system clock in a custom format. For information on how to change the time zone or enable automatic synchronization of the system clock with a remote server, see Section 3.1, "Using the timedatectl Command" . 3.2.1. Displaying the Current Date and Time To display the current date and time, run the date command with no additional command line options: This displays the day of the week followed by the current date, local time, abbreviated time zone, and year. By default, the date command displays the local time. To display the time in UTC, run the command with the --utc or -u command line option: You can also customize the format of the displayed information by providing the +" format " option on the command line: Replace format with one or more supported control sequences as illustrated in Example 3.6, "Displaying the Current Date and Time" . See Table 3.1, "Commonly Used Control Sequences" for a list of the most frequently used formatting options, or the date (1) manual page for a complete list of these options. Table 3.1. Commonly Used Control Sequences Control Sequence Description %H The hour in the HH format (for example, 17 ). %M The minute in the MM format (for example, 30 ). %S The second in the SS format (for example, 24 ). %d The day of the month in the DD format (for example, 16 ). %m The month in the MM format (for example, 09 ). %Y The year in the YYYY format (for example, 2016 ). %Z The time zone abbreviation (for example, CEST ). %F The full date in the YYYY-MM-DD format (for example, 2016-09-16 ). This option is equal to %Y-%m-%d . %T The full time in the HH:MM:SS format (for example, 17:30:24). This option is equal to %H:%M:%S Example 3.6. Displaying the Current Date and Time To display the current date and local time, type the following at a shell prompt: To display the current date and time in UTC, type the following at a shell prompt: To customize the output of the date command, type: 3.2.2. Changing the Current Time To change the current time, run the date command with the --set or -s option as root : Replace HH with an hour, MM with a minute, and SS with a second, all typed in two-digit form. By default, the date command sets the system clock to the local time. To set the system clock in UTC, run the command with the --utc or -u command line option: Example 3.7. Changing the Current Time To change the current time to 11:26 p.m., run the following command as root : 3.2.3. Changing the Current Date To change the current date, run the date command with the --set or -s option as root : Replace YYYY with a four-digit year, MM with a two-digit month, and DD with a two-digit day of the month. Note that changing the date without specifying the current time results in setting the time to 00:00:00. Example 3.8. Changing the Current Date To change the current date to 2 June 2017 and keep the current time (11:26 p.m.), run the following command as root : 3.3. Using the hwclock Command hwclock is a utility for accessing the hardware clock, also referred to as the Real Time Clock (RTC). The hardware clock is independent of the operating system you use and works even when the machine is shut down. This utility is used for displaying the time from the hardware clock. hwclock also contains facilities for compensating for systematic drift in the hardware clock. The hardware clock stores the values of: year, month, day, hour, minute, and second. It is not able to store the time standard, local time or Coordinated Universal Time (UTC), nor set the Daylight Saving Time (DST). The hwclock utility saves its settings in the /etc/adjtime file, which is created with the first change you make, for example, when you set the time manually or synchronize the hardware clock with the system time. Note For the changes in the hwclock behaviour between Red Hat Enterprise Linux version 6 and 7, see Red Hat Enterprise Linux 7 Migration Planning Guide guide. 3.3.1. Displaying the Current Date and Time Running hwclock with no command line options as the root user returns the date and time in local time to standard output. Note that using the --utc or --localtime options with the hwclock command does not mean you are displaying the hardware clock time in UTC or local time. These options are used for setting the hardware clock to keep time in either of them. The time is always displayed in local time. Additionally, using the hwclock --utc or hwclock --local commands does not change the record in the /etc/adjtime file. This command can be useful when you know that the setting saved in /etc/adjtime is incorrect but you do not want to change the setting. On the other hand, you may receive misleading information if you use the command an incorrect way. See the hwclock (8) manual page for more details. Example 3.9. Displaying the Current Date and Time To display the current date and the current local time from the hardware clock, run as root : CEST is a time zone abbreviation and stands for Central European Summer Time. For information on how to change the time zone, see Section 3.1.4, "Changing the Time Zone" . 3.3.2. Setting the Date and Time Besides displaying the date and time, you can manually set the hardware clock to a specific time. When you need to change the hardware clock date and time, you can do so by appending the --set and --date options along with your specification: Replace dd with a day (a two-digit number), mmm with a month (a three-letter abbreviation), yyyy with a year (a four-digit number), HH with an hour (a two-digit number), MM with a minute (a two-digit number). At the same time, you can also set the hardware clock to keep the time in either UTC or local time by adding the --utc or --localtime options, respectively. In this case, UTC or LOCAL is recorded in the /etc/adjtime file. Example 3.10. Setting the Hardware Clock to a Specific Date and Time If you want to set the date and time to a specific value, for example, to "21:17, October 21, 2016", and keep the hardware clock in UTC, run the command as root in the following format: 3.3.3. Synchronizing the Date and Time You can synchronize the hardware clock and the current system time in both directions. Either you can set the hardware clock to the current system time by using this command: Note that if you use NTP, the hardware clock is automatically synchronized to the system clock every 11 minutes, and this command is useful only at boot time to get a reasonable initial system time. Or, you can set the system time from the hardware clock by using the following command: When you synchronize the hardware clock and the system time, you can also specify whether you want to keep the hardware clock in local time or UTC by adding the --utc or --localtime option. Similarly to using --set , UTC or LOCAL is recorded in the /etc/adjtime file. The hwclock --systohc --utc command is functionally similar to timedatectl set-local-rtc false and the hwclock --systohc --local command is an alternative to timedatectl set-local-rtc true . Example 3.11. Synchronizing the Hardware Clock with System Time To set the hardware clock to the current system time and keep the hardware clock in local time, run the following command as root : To avoid problems with time zone and DST switching, it is recommended to keep the hardware clock in UTC. The shown Example 3.11, "Synchronizing the Hardware Clock with System Time" is useful, for example, in case of a multi boot with a Windows system, which assumes the hardware clock runs in local time by default, and all other systems need to accommodate to it by using local time as well. It may also be needed with a virtual machine; if the virtual hardware clock provided by the host is running in local time, the guest system needs to be configured to use local time, too. 3.4. Additional Resources For more information on how to configure the date and time in Red Hat Enterprise Linux 7, see the resources listed below. Installed Documentation timedatectl (1) - The manual page for the timedatectl command line utility documents how to use this tool to query and change the system clock and its settings. date (1) - The manual page for the date command provides a complete list of supported command line options. hwclock (8) - The manual page for the hwclock command provides a complete list of supported command line options. See Also Chapter 2, System Locale and Keyboard Configuration documents how to configure the keyboard layout. Chapter 6, Gaining Privileges documents how to gain administrative privileges by using the su and sudo commands. Chapter 10, Managing Services with systemd provides more information on systemd and documents how to use the systemctl command to manage system services.

Commands:
timedatectl
~]USD timedatectl Local time: Mon 2016-09-16 19:30:24 CEST Universal time: Mon 2016-09-16 17:30:24 UTC Timezone: Europe/Prague (CEST, +0200) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: yes Last DST change: DST began at Sun 2016-03-31 01:59:59 CET Sun 2016-03-31 03:00:00 CEST Next DST change: DST ends (the clock jumps one hour backwards) at Sun 2016-10-27 02:59:59 CEST Sun 2016-10-27 02:00:00 CET
~]# systemctl restart systemd-timedated.service
timedatectl set-time HH:MM:SS
~]# timedatectl set-time 23:26:00
timedatectl set-local-rtc boolean
timedatectl set-time YYYY-MM-DD
~]# timedatectl set-time "2017-06-02 23:26:00"
timedatectl list-timezones
timedatectl set-timezone time_zone
~]# timedatectl list-timezones | grep Europe Europe/Amsterdam Europe/Andorra Europe/Athens Europe/Belgrade Europe/Berlin Europe/Bratislava ...
~]# timedatectl set-timezone Europe/Prague
timedatectl set-ntp boolean
~]# timedatectl set-ntp yes
date
date --utc
date +"format"
~]USD date Mon Sep 16 17:30:24 CEST 2016
~]USD date --utc Mon Sep 16 15:30:34 UTC 2016
~]USD date +"%Y-%m-%d %H:%M" 2016-09-16 17:30
date --set HH:MM:SS
date --set HH:MM:SS --utc
~]# date --set 23:26:00
date --set YYYY-MM-DD
~]# date --set "2017-06-02 23:26:00"
hwclock
~]# hwclock Tue 15 Apr 2017 04:23:46 PM CEST -0.329272 seconds
hwclock --set --date "dd mmm yyyy HH:MM"
~]# hwclock --set --date "21 Oct 2016 21:17" --utc
hwclock --systohc
hwclock --hctosys
~]# hwclock --systohc --localtime