Date Command in Linux/Unix With Examples | Code Factory


Donate : Link

Medium Blog : Link

Applications : Link

date command is used to display the system date and time. date command is also used to set date and time of the system. By default the date command displays the date in the time zone on which unix/linux operating system is configured.You must be the super-user (root) to change the date and time.

~/codeFactory$ date --help
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.

Mandatory arguments to long options are mandatory for short options too.
  -d, --date=STRING          display time described by STRING, not 'now'
      --debug                annotate the parsed date,
                              and warn about questionable usage to stderr
  -f, --file=DATEFILE        like --date; once for each line of DATEFILE
  -I[FMT], --iso-8601[=FMT]  output date/time in ISO 8601 format.
                               FMT='date' for date only (the default),
                               'hours', 'minutes', 'seconds', or 'ns'
                               for date and time to the indicated precision.
                               Example: 2006-08-14T02:34:56-06:00
  -R, --rfc-email            output date and time in RFC 5322 format.
                               Example: Mon, 14 Aug 2006 02:34:56 -0600
      --rfc-3339=FMT         output date/time in RFC 3339 format.
                               FMT='date', 'seconds', or 'ns'
                               for date and time to the indicated precision.
                               Example: 2006-08-14 02:34:56-06:00
  -r, --reference=FILE       display the last modification time of FILE
  -s, --set=STRING           set time described by STRING
  -u, --utc, --universal     print or set Coordinated Universal Time (UTC)
      --help     display this help and exit
      --version  output version information and exit

FORMAT controls the output.  Interpreted sequences are:

  %%   a literal %
  %a   locale's abbreviated weekday name (e.g., Sun)
  %A   locale's full weekday name (e.g., Sunday)
  %b   locale's abbreviated month name (e.g., Jan)
  %B   locale's full month name (e.g., January)
  %c   locale's date and time (e.g., Thu Mar  3 23:05:25 2005)
  %C   century; like %Y, except omit last two digits (e.g., 20)
  %d   day of month (e.g., 01)
  %D   date; same as %m/%d/%y
  %e   day of month, space padded; same as %_d
  %F   full date; same as %Y-%m-%d
  %g   last two digits of year of ISO week number (see %G)
  %G   year of ISO week number (see %V); normally useful only with %V
  %h   same as %b
  %H   hour (00..23)
  %I   hour (01..12)
  %j   day of year (001..366)
  %k   hour, space padded ( 0..23); same as %_H
  %l   hour, space padded ( 1..12); same as %_I
  %m   month (01..12)
  %M   minute (00..59)
  %n   a newline
  %N   nanoseconds (000000000..999999999)
  %p   locale's equivalent of either AM or PM; blank if not known
  %P   like %p, but lower case
  %q   quarter of year (1..4)
  %r   locale's 12-hour clock time (e.g., 11:11:04 PM)
  %R   24-hour hour and minute; same as %H:%M
  %s   seconds since 1970-01-01 00:00:00 UTC
  %S   second (00..60)
  %t   a tab
  %T   time; same as %H:%M:%S
  %u   day of week (1..7); 1 is Monday
  %U   week number of year, with Sunday as first day of week (00..53)
  %V   ISO week number, with Monday as first day of week (01..53)
  %w   day of week (0..6); 0 is Sunday
  %W   week number of year, with Monday as first day of week (00..53)
  %x   locale's date representation (e.g., 12/31/99)
  %X   locale's time representation (e.g., 23:13:48)
  %y   last two digits of year (00..99)
  %Y   year
  %z   +hhmm numeric time zone (e.g., -0400)
  %:z  +hh:mm numeric time zone (e.g., -04:00)
  %::z  +hh:mm:ss numeric time zone (e.g., -04:00:00)
  %:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)
  %Z   alphabetic time zone abbreviation (e.g., EDT)

By default, date pads numeric fields with zeroes.
The following optional flags may follow '%':

  -  (hyphen) do not pad the field
  _  (underscore) pad with spaces
  0  (zero) pad with zeros
  ^  use upper case if possible
  #  use opposite case if possible

After any flags comes an optional field width, as a decimal number;
then an optional modifier, which is either
E to use the locale's alternate representations if available, or
O to use the locale's alternate numeric symbols if available.

Examples:
Convert seconds since the epoch (1970-01-01 UTC) to a date
  $ date --date='@2147483647'

Show the time on the west coast of the US (use tzselect(1) to find TZ)
  $ TZ='America/Los_Angeles' date

Show the local time for 9AM next Friday on the west coast of the US
  $ date --date='TZ="America/Los_Angeles" 09:00 next Fri'

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report date translation bugs to <https://translationproject.org/team/>
Full documentation at: <https://www.gnu.org/software/coreutils/date>
or available locally via: info '(coreutils) date invocation'

Using date with options:

1. date (no option): With no options, the date command displays the current date and time, including the abbreviated day name, abbreviated month name, day of the month, the time separated by colons, the time zone name, and the year.

~/codeFactory$ date
Mon Sep  6 16:13:59 UTC 2021

Note: Here unix system is configured in UTC.

2. -u: Displays the time in GMT (Greenwich Mean Time) / UTC (Coordinated Universal Time ) time zone.

~/codeFactory$ date -u
Mon Sep  6 16:15:53 UTC 2021

3. –date or -d: Displays the given date string in the format of date. But this will not affect the system’s actual date and time value.Rather it uses the date and time given in the form of string.

~/codeFactory$ date --date="03/04/2034"
Sat Mar  4 00:00:00 UTC 2034

~/codeFactory$ date --date="Jan 1 2021"
Fri Jan  1 00:00:00 UTC 2021

~/codeFactory$ date -d "03/04/2034"
Sat Mar  4 00:00:00 UTC 2034

~/codeFactory$ date -d "Jan 1 2021"
Fri Jan  1 00:00:00 UTC 2021

4. Using –date option for displaying past dates:

  • Date and Time of 1 years ago
~/codeFactory$ date
Mon Sep  6 16:22:00 UTC 2021

~/codeFactory$ date --date="1 year ago"
Sun Sep  6 16:22:00 UTC 2020

~/codeFactory$ date --date="1 years ago"
Sun Sep  6 16:22:00 UTC 2020
  • Date and Time of 1 minutes ago
~/codeFactory$ date
Mon Sep  6 16:24:56 UTC 2021

~/codeFactory$ date --date="1 minute ago"
Mon Sep  6 16:23:56 UTC 2021

~/codeFactory$ date --date="1 minutes ago"
Mon Sep  6 16:23:56 UTC 2021
  • Date and Time 10 seconds ago
~/codeFactory$ date
Mon Sep  6 16:27:37 UTC 2021

~/codeFactory$ date --date="10 seconds ago"
Mon Sep  6 16:27:27 UTC 2021
  • Date and Time of previous day
~/codeFactory$ date --date="yesterday"
Sun Sep  5 16:28:52 UTC 2021
  • Date and Time 1 month ago
~/codeFactory$ date --date="1 months ago"
Fri Aug  6 16:30:00 UTC 2021
  • Date and Time 10 days ago
~/codeFactory$ date --date="10 days ago"
Fri Aug 27 16:31:00 UTC 2021

5. Using –date option for displaying future date: 

  • Date and Time of upcoming particular week day
~/codeFactory$ date --date="next mon"
Mon Sep 13 00:00:00 UTC 2021
  • Date and Time after 10 days
~/codeFactory$ date --date="10 day"
Thu Sep 16 16:33:25 UTC 2021
  • Date and Time of next day
~/codeFactory$ date --date="tomorrow"
Tue Sep  7 16:34:28 UTC 2021
  • Date and Time after 1 year on the current day
~/codeFactory$ date --date="1 year"
Tue Sep  6 16:35:38 UTC 2022

6. –set or -s: To set the system date and time –set or -s option is used.

~/codeFactory$ date
Mon Sep  6 16:37:40 UTC 2021

~/codeFactory$ date --set="Mon Sep 13 10:20:30 UTC 2021"

~/codeFactory$ date
Mon Sep  6 16:38:25 UTC 2021

7. –file or -f

~/codeFactory$ cat >> datetest
Sep 13 2021
Oct 4 2020
Nov 3 2019

~/codeFactory$ date --file=datetest 
Mon Sep 13 00:00:00 UTC 2021
Sun Oct  4 00:00:00 UTC 2020
Sun Nov  3 00:00:00 UTC 2019

8. -r: This is used to display the last modified timestamp of a datefile.

~/codeFactory$ date -r datetest 
Mon Sep  6 16:41:37 UTC 2021

Change date and time of file
~/codeFactory$ touch datetest 

~/codeFactory$ date -r datetest 
Mon Sep  6 16:44:11 UTC 2021

9. Format specifiers used with date command

~/codeFactory$ date "+%D"
09/06/21

~/codeFactory$ date "+%D %T"
09/06/21 16:46:53

~/codeFactory$ date "+%Y-%m-%d"
2021-09-06

~/codeFactory$ date "+%Y\%m\%d"
2021\09\06

~/codeFactory$ date "+%A %B %d %T %y"
Monday September 06 16:47:56 21

Leave a comment