Linux: Bash Get Time

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.

Tutorial details
Difficulty level Easy
Root privileges No
Requirements None
Est. reading time 1m


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

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 5 comments so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersncdu pydf
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
5 comments… add one
  • vaLar Oct 27, 2010 @ 17:28

    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

    • soubhik Oct 13, 2014 @ 14:10

      It’s not
      $ date +”%T”


      $ date “+%T”

      • Mike Sep 19, 2015 @ 17:28

        @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.

  • Leonardo Nov 11, 2015 @ 12:55

    date +%Y.%m.%d-%k.%M

  • David Groover Mar 20, 2016 @ 18:15

    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.

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum