Linux: Bash Get Time

last updated in Categories , , , , ,

How do I get the system time in BASH? How can I get the Linux system using bash shell?

You can use the date command to display and/or set the Linux or UNIX-like system date and time. First, open the terminal application or login over ssh session and type the command at bash prompt.




To display current time, enter:

$ date

Sample outputs:

Wed Oct 27 16:50:41 IST 2010

You can only display time, enter:
$ date +"%T"
Sample outputs:


The following command use your local standards to display date and time:
$ date +"%c"
Sample outputs:

Wednesday 27 October 2010 04:52:06 PM IST

To display the date and time in a specified format, enter:
date +"%r %a %d %h %y (Julian Date: %j)"
Sample outputs:

12:52:58 AM Sun 20 Sep 15 (Julian Date: 263)

A list of date command field descriptors

       %%     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
       %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,
       %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

Finally, you can use TZ variable as follows. For example, show the time on the west coast of the US:
$ TZ='America/Los_Angeles' date
Sat Sep 19 12:26:57 PDT 2015


Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

5 comment

  1. And to set the time trought BASH, use this:

    date MMDDHHmmYYYY

    MM = Month (2 digits)
    DD = Day (2 digits)
    HH= Hours (24 hours format)
    mm= Minutes (2 digits)
    YYYY= Year (4 digits)

    date 102712232010
    Set the time to Wed Oct 27 12:23:00 CDT 2010

      1. @soubhik — Your comment is inaccurate. Read more on the man page for /bin/sh or any shell.

        Those commands that you posted, in this case, are equivalent. Read the section on quoting.

  2. Setting a multi time zone clock on a corner of my desktop. Using NerdTool shell scripting. I have tried making use of the different time zone example on this page. Problem is Unless it is immediate close to local I get a default of several hours – not at all what I expected to get. Can anyone please tell me what I am doing wrong? Thanks.

    TZ=’America/Hawaii’ date “+%H:%M %p”
    TZ=’America/Los_Angeles’ date “+%H:%M %p”
    TZ=’America/Denver’ date “+%H:%M %p”
    TZ=’America/Dallas’ date “+%H:%M %p”
    TZ=’America/Miami’ date “+%H:%M %p”

    PS – I am not an expert in this, just trying examples out and doing my best to modify as the index reveals options. The example uses the dollar sign to precede the code but doing that kills the script in NerdTool.

    Still, have a question? Get help on our forum!