In this article, we will learn about the ‘date’ command in Linux and how to practically use the ‘date’ command in day-to-day usage with some practical examples. The ‘date’ command is used to print or to change the system date and time.
[root@localhost ~]# date [OPTION]... [+FORMAT] [root@localhost ~]# date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
We can print date and time on the system
We can display the date and time in the given format.
We can read the date from the file
We can display the Universal time.
We can set the system date and time.
The below example of the command which will take an input and it will display the given string with an option –date.
[root@localhost ~]# date --date=”6/15/2016” Wed Jun 15 15:36:30 IST 2016
Read the date from the file using the ‘-file’ option. This command will read the dates in the file contents and display the dates. For example, if we have a log file and we want to display the date in the log file, we can use this command.
Also, we can create a file and keep some dates in that file so that this command will read the file and display the dates in the file as output.
I have created a file with the below data –
[root@localhost ~]# vi samplelog.txt File contents 04 jun 1978 03 aug 1980 24 feb 2004 22 dec 2007
[root@localhost ~]# date --file=samplelog.txt The output will be Sat Jun 24 00:00:00 IST 1978 Sat Aug 30 00:00:00 IST 1980 Sat Feb 14 00:00:00 IST 2004 Tue Dec 11 00:00:00 IST 2007
The below command and option will be used to print the passed date. For instance, if we want yesterday or 1 month back or 1 year back.
[root@localhost ~]# date --date='1 day ago' Tue Jun 14 16:01:31 IST 2016 [root@localhost ~]# date --date='yesterday' Tue Jun 14 16:03:01 IST 2016 [root@localhost ~]# date --date='1 month ago' Sun May 15 16:03:35 IST 2016 [root@localhost ~]# date --date='1 year ago' Mon Jun 15 16:03:57 IST 2015
The ‘-s’ is the option for the date command to set the date and time.
$ date -s "Tue June 15 04:08:37 IST 2016" Wed Jun 15 04:08:37 IST 2016
This is called the Universal Time (UT) which is like a standard, based on the Earth rotations – The GMT (Greenwich Mean Time).
[root@localhost ~]# date Wed Jun 15 04:10:29 IST 2016 [root@localhost ~]# date -u Tue Jun 14 22:40:31 UTC 2016
We can also verify the date of the file modified using the date with –r option
[root@localhost ~]# date -r samplelog.txt Wed Jun 15 15:45:37 IST 2016
We can use the date command to convert the date to our or current time zone using this option –d with date command.
[root@localhost ~]# date -d '2016-05-20 18:00 CST' Sat May 21 05:30:00 IST 2016
The other options you can check with the date command are listed below
%% 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 ( 0..23) %l hour ( 1..12) %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 %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 timezone (e.g., -0400) %:z +hh:mm numeric timezone (e.g., -04:00) %::z +hh:mm:ss numeric time zone (e.g., -04:00:00) 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.
By using the date command with many more options, we can find out the date and time of the file created, and date and time in the log files or files in a different format. However, we can convert the date and time from one zone to another as per our requirement.