Date command in Linux

Share on:

Table of Contents

Date command in Linux is used to display date, time, time zone, etc. It is also used to set the date and time of the Linux system. Generally, it is used to display the date in different formats and calculate dates over time.

Date command in Linux

The following is the syntax of date command on the Linux terminal:

$ date [OPTION]... [+FORMAT]
$ date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

By default the date command prints the date in the timezone in which the system is configured. To change the date and time you should need a user with root or sudo privilege.

1. Display Date

When the date command is used without any options and arguments, it displays the current date and time in the default format as follows:

$ date

The output includes the day of the week, month, day of the month, time, timezone, and year:

~$ date
Mon 08 Nov 2021 07:06:49 AM CET

2. Show Future dates

The date string -dor --date option allows you to print the future or upcoming dates. To print the future dates, type the values into the strings such as “next Friday“, “tomorrow” or similar…

~$ date -d "tomorrow"
Tue 09 Nov 2021 07:11:32 AM CET

~$ date -d "next Friday"
Fri 12 Nov 2021 12:00:00 AM CET

3. Display past dates

Using the -d option, you can display the past dates on your Linux system.

  • Date and time of 2 years ago.
~$ date --date="2 year ago"
Fri 08 Nov 2019 07:15:42 AM CET
  • Date and time of 5 seconds ago.
$ date --date="5 sec ago"
Mon 08 Nov 2021 07:18:07 AM CET
  • Date and time of 10 days ago.
~$ date --date="10 day ago"
Fri 29 Oct 2021 08:19:22 AM CEST

4. Date Command Format Options

The output of the date command can be formatted with a sequence of format control characters preceded by a + sign. The format controls start with the % symbol and are substituted by their values.

$ date +"Year: %Y, Month: %m, Day: %d"

Example outputs:

~$ date +"Year: %Y, Month: %m, Day: %d"
Year: 2021, Month: 11, Day: 08
  • %a – Prints weekday’s name in short format (e.g., Mon)
  • %A – Used to display full weekday name (e.g., Monday)
  • %b – Display the name of the month in short form (e.g., Jan)
  • %B – Used to display the full month’s name (e.g., January)
  • %d – Displays the month’s day (e.g., 05)
  • %H – Display Hour (00..23)
  • %I – Display Hour in (01..12) format
  • %j – Displays the Day of year (001..366)
  • %m – Displays Month in number (01..12)
  • %M – Print Minutes in 00..59 sec.
  • %S – Displays seconds (00..60)
  • %u – Display week’s day in number (1..7)
  • %Y – Used to display Full-year (e.g., 2019)

Using the following command, you can explore the full list of format options of the date command:

$ date --help
$ man date

5. Display Date from a String Value

The -d option allows you to operate on a specific date. You can specify the date as a human-readable date string like below:

$ date -d "2021-11-08 12:10:32"

Example output:

~$ date -d "2021-11-08 12:10:32"
Mon 08 Nov 2021 12:10:32 PM CET

Using the -d option, you can also display the date in the custom formatting as follows:

~$ date -d '08 Oct 2021' +'%A, %d %B %Y'
Friday, 08 October 2021

6. Date command to set the timezone

The date command returns the date in the default system timezone . To use a different timezone set the environment variable TZ to the desired timezone.
For example, to show the Melbourne, Aus time, you would type:

TZ='Asia/Dhaka' date

To list all available time zones, you can either list the files in the /usr/share/zoneinfo directory or use the timedatectl list-timezones command.

7. Epoch Converter

The date command can be used as an Epoch converter. Epoch, or Unix timestamps, is the number of seconds that have elapsed since January 1, 1970 at 00:00:00 UTC.
To print the number of the seconds from the epoch to the current day, invoke date with the %s format control:

~$ date +%s

For example, to view how many seconds elapsed from an epoch to a specific date, use the following command:

~$ date -d "1984-02-10" +"%s"

8. Display the last modification time of a file

The date command with the -r option shows the last modification time of a file. For example:

$ date -r /etc/hosts

Example output:

Tue 02 Nov 2021 11:58:15 PM CET

9. Set the system time and date

Setting the system time and date manually with the date command is not recommended because on most Linux distributions, the system clock is synchronized using the ntp or the systemd-timesyncd services.
However, if you want to set the system clock manually, you can use the –set= option. For example, to manually set the date and time of the Linux system to 5:30 PM, November 08, 2021. Run the below-mentioned command:

$ date --set="20211108 05:30"