Date (Unix)
Encyclopedia
The Unix
date command displays the time and date. The super-user can use it to set the system clock.
$date
Fri Jul 27 14:12:06 EDT 2007
Note that the implementation of the date command differs between Unix flavors. Specifically the GNU
coreutils based command is much different than other POSIX
implementations.
literals: %n newline %% percent %t horizontal tab
By default, date pads numeric fields with zeroes.
GNU date, but not BSD date, recognizes - (hyphen) do not pad the field and _ (underscore) pad the field with spaces between % and a numeric directive.
TZ Specifies the timezone, unless overridden by command line parameters.
If neither is specified, the setting from /etc/localtime is used.
-e=datefile like de once for each line of datefile
-s, --set=string set time described by string
-n don't synchronize the clocks on groups of machines using the utility timed(8). By default, if timed is running, date will set the time on all of the machines in the local group. -n inhibites that.
-u Display or set the date in UTC (universal) time.
date[-u|--utc|--universal] [mmddHHMMc]yy].SS
The only valid option for this form specifies Coordinated Universal Time.
-u GMT ex: Sat Feb 5 14:49:42 GMT 2005
--utc, --universal Coordinated Universal Time local TZ Sat Feb 5 09:49:59 EST 2005
-ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601
format.
TIMESPEC=date for date only, hours, minutes, or seconds for date and time to the indicated precision.
--iso-8601 without TIMESPEC defaults to `date'.
-R, --rfc-822 output RFC-822 compliant date string,
example: Wed, 16 Dec 2009 15:18:11 +0100
--help
The Single Unix Specification
(SUS) mandates only one option: -u, where the date and time is printed as if the timezone was UTC+0. Other Unix and Unix-like systems provide extra options.
7/4/06
date "+%Y%m%d"
20060704
To assign the time to a variable
START=`date '+%r'`
echo $START
03:06:02 PM
sleep 5
echo $START
03:06:02 PM
N.B. the variable has the time when it was assigned.
Yesterday assigned to variable
DATE=$(date -d yesterday +"%Y%m%d")
echo $DATE
20060704
To show the time in a different timezone, the TZ environment variable is read,
Timezone types is found in /usr/share/zoneinfo
OLDTZ=$TZ
export TZ=GMT; echo "GMT: `date +\"%F %R (%Z)\"`"
GMT: 2008-10-31 12:30 (GMT)
export TZ=Europe/Stockholm; echo "Stockholm: `date +\"%F %R (%Z)\"`"
Stockholm: 2008-10-31 13:30 (CET)
export TZ=Asia/Kuala_Lumpur; echo "Kuala Lumpur: `date +\"%F %R (%Z)\"`"
Kuala Lumpur: 2008-10-31 20:30 (MYT)
export TZ=US/Central; echo "Dallas: `date +\"%F %R (%Z)\"`"
Dallas: 2008-10-31 07:30 (CDT)
export TZ=$OLDTZ
Other valid time strings
date +"%Y%m%d" -d sunday # GNU date
20060709
date +"%Y%m%d" -d last-sunday # GNU date
20060702
date +"%Y%m%d" -d last-week # GNU date
date -v -1m +"%Y%m%d" # BSD date
20060627
date +"%Y%m%d" -d last-month # GNU date
date -v -1w +"%Y%m%d" # BSD date
20060604
date +"%Y%m%d" -d last-year # GNU date
date -v -1y +"%Y%m%d" # BSD date
20050704
date +"%Y%m%d" -d next-week # GNU date
date -v 1w +"%Y%m%d" # BSD date
20060711
date +"%Y%m%d" -d next-month # GNU date
date -v 1m +"%Y%m%d" # BSD date
20060804
date +"%Y%m%d" -d next-year # GNU date
date -v 1y +"%Y%m%d" # BSD date
20070704
date +"%Y%m%d" -d "2 days ago" # GNU date
date -v -2d +"%Y%m%d" # BSD date
20060702
date +"%Y%m%d" -d "2 months ago" # GNU date
date -v -2m +"%Y%m%d" # BSD date
20060504
date +"%Y%m%d" -d "2 years ago" # GNU date
date -v -2y +"%Y%m%d" # BSD date
20040704
To show the time in seconds since 1970-01-01 (Unix epoch):
date +"%s" -d "Fri Apr 24 13:14:39 CDT 2009"
1240596879
To convert Unix epoch time (seconds since 1970-01-01) to a human readable format:
date -d "UTC 1970-01-01 1240596879 secs"
Fri Apr 24 13:14:39 CDT 2009
Or:
date -ud @1000000000
Sun Sep 9 01:46:40 UTC 2001
Other Unix and Unix-like systems may set different options or date formats for date, for example, on some systems to set the current date and time to September 8, 2004 01:22 you type:
date --set="20040908 01:22"
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
date command displays the time and date. The super-user can use it to set the system clock.
Usage
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 timezone name, and the year. For example:$date
Fri Jul 27 14:12:06 EDT 2007
Note that the implementation of the date command differs between Unix flavors. Specifically the GNU
GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
coreutils based command is much different than other POSIX
POSIX
POSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...
implementations.
Formatting
To format a date provide a string beginning with + .Specifier | Description | Values/Example |
---|---|---|
Day | ||
%a | weekday, abbreviated | |
%A | weekday, full | |
%d | day of the month (dd), zero padded | |
%e | day of the month (dd) | |
%j | day of year, zero padded | 001-366 |
%u | day of week starting with Monday (1), i.e. mtwtfss | |
%w | day of week starting with Sunday (0), i.e. smtwtfs | |
Week | ||
%U | week number Sunday as first day of week | 00–53 |
%W | week number Monday as first day of week | 01–53 |
%V | week of the year | 01–53 |
Month | ||
%m | mm month | |
%h | Mon | |
%b | Mon, locale's abbreviated | |
%B | locale's full month, variable length | |
Year | ||
%y | yy two digit year | 00–99 |
%Y | ccyy year | |
%g | 2-digit year corresponding to the %V week number | |
%G | 4-digit year corresponding to the %V week number | |
Century | ||
%C | cc century | 00–99 |
Date | ||
%D | mm/dd/yy | // |
%x | locale's date representation (mm/dd/yy) | // |
%F | %Y-%m-%d | -- |
Hours | ||
%l (Lowercase L) | hour (12 hour clock) | |
%I (Uppercase I) | hour (12 hour clock) zero padded | |
%k | hour (24 hour clock) | |
%H | hour (24 hour clock) zero padded | |
%p | locale's upper case AM or PM (blank in many locales) | |
%P | locale's lower case am or pm | |
Minutes | ||
%M | MM minutes | |
Seconds | ||
%s | seconds since 00:00:00 1970-01-01 UTC (Unix epoch) | |
%S | SS second | 00–60 (The 60 is necessary to accommodate a leap second) |
%N | nanoseconds | 000000000–999999999 |
Time | ||
%r | hours, minutes, seconds (12-hour clock) | |
%R | hours, minutes (24 hour clock) | hh:mm e.g. |
%T | hours, minutes, seconds (24-hour clock) | |
%X | locale's time representation (%H:%M:%S) | |
Date and Time | ||
%c | locale's date and time | Sat Nov 04 12:02:33 EST 1989 |
Time zone | ||
%z | ||
-0500 | ||
%Z | time zone (e.g., EDT) nothing if no time zone is determinable | EST |
literals: %n newline %% percent %t horizontal tab
By default, date pads numeric fields with zeroes.
GNU date, but not BSD date, recognizes - (hyphen) do not pad the field and _ (underscore) pad the field with spaces between % and a numeric directive.
TZ Specifies the timezone, unless overridden by command line parameters.
If neither is specified, the setting from /etc/localtime is used.
Options
-d, -de=string display time described by string, not now.-e=datefile like de once for each line of datefile
-s, --set=string set time described by string
-n don't synchronize the clocks on groups of machines using the utility timed(8). By default, if timed is running, date will set the time on all of the machines in the local group. -n inhibites that.
-u Display or set the date in UTC (universal) time.
date
.ss
.ss is the designated country code top-level domain for South Sudan in the Domain Name System of the Internet. It is derived from the ISO 3166-1 alpha-2 code for South Sudan, which is SS. According to CIO East Africa, the TLD was allocated on 10 August 2011 following the country's declaration of...
-u GMT ex: Sat Feb 5 14:49:42 GMT 2005
--utc, --universal Coordinated Universal Time local TZ Sat Feb 5 09:49:59 EST 2005
-ITIMESPEC, --iso-8601[=TIMESPEC] output date/time in ISO 8601
ISO 8601
ISO 8601 Data elements and interchange formats – Information interchange – Representation of dates and times is an international standard covering the exchange of date and time-related data. It was issued by the International Organization for Standardization and was first published in 1988...
format.
TIMESPEC=date for date only, hours, minutes, or seconds for date and time to the indicated precision.
--iso-8601 without TIMESPEC defaults to `date'.
-R, --rfc-822 output RFC-822 compliant date string,
example: Wed, 16 Dec 2009 15:18:11 +0100
--help
The Single Unix Specification
Single UNIX Specification
The Single UNIX Specification is the collective name of a family of standards for computer operating systems to qualify for the name "Unix"...
(SUS) mandates only one option: -u, where the date and time is printed as if the timezone was UTC+0. Other Unix and Unix-like systems provide extra options.
Examples
date "+%m/%d/%y"7/4/06
date "+%Y%m%d"
20060704
To assign the time to a variable
START=`date '+%r'`
echo $START
03:06:02 PM
sleep 5
echo $START
03:06:02 PM
N.B. the variable has the time when it was assigned.
Yesterday assigned to variable
DATE=$(date -d yesterday +"%Y%m%d")
echo $DATE
20060704
To show the time in a different timezone, the TZ environment variable is read,
Timezone types is found in /usr/share/zoneinfo
OLDTZ=$TZ
export TZ=GMT; echo "GMT: `date +\"%F %R (%Z)\"`"
GMT: 2008-10-31 12:30 (GMT)
export TZ=Europe/Stockholm; echo "Stockholm: `date +\"%F %R (%Z)\"`"
Stockholm: 2008-10-31 13:30 (CET)
export TZ=Asia/Kuala_Lumpur; echo "Kuala Lumpur: `date +\"%F %R (%Z)\"`"
Kuala Lumpur: 2008-10-31 20:30 (MYT)
export TZ=US/Central; echo "Dallas: `date +\"%F %R (%Z)\"`"
Dallas: 2008-10-31 07:30 (CDT)
export TZ=$OLDTZ
Other valid time strings
date +"%Y%m%d" -d sunday # GNU date
20060709
date +"%Y%m%d" -d last-sunday # GNU date
20060702
date +"%Y%m%d" -d last-week # GNU date
date -v -1m +"%Y%m%d" # BSD date
20060627
date +"%Y%m%d" -d last-month # GNU date
date -v -1w +"%Y%m%d" # BSD date
20060604
date +"%Y%m%d" -d last-year # GNU date
date -v -1y +"%Y%m%d" # BSD date
20050704
date +"%Y%m%d" -d next-week # GNU date
date -v 1w +"%Y%m%d" # BSD date
20060711
date +"%Y%m%d" -d next-month # GNU date
date -v 1m +"%Y%m%d" # BSD date
20060804
date +"%Y%m%d" -d next-year # GNU date
date -v 1y +"%Y%m%d" # BSD date
20070704
date +"%Y%m%d" -d "2 days ago" # GNU date
date -v -2d +"%Y%m%d" # BSD date
20060702
date +"%Y%m%d" -d "2 months ago" # GNU date
date -v -2m +"%Y%m%d" # BSD date
20060504
date +"%Y%m%d" -d "2 years ago" # GNU date
date -v -2y +"%Y%m%d" # BSD date
20040704
To show the time in seconds since 1970-01-01 (Unix epoch):
date +"%s" -d "Fri Apr 24 13:14:39 CDT 2009"
1240596879
To convert Unix epoch time (seconds since 1970-01-01) to a human readable format:
date -d "UTC 1970-01-01 1240596879 secs"
Fri Apr 24 13:14:39 CDT 2009
Or:
date -ud @1000000000
Sun Sep 9 01:46:40 UTC 2001
Setting the date
The XSI extension to the SUS specifies that the date command can also be used to set the date. The new date is specified as an option to date in the format MMddhhmmc]yy], where MM specifies the two-digit numeric month, dd specifies the two-digit numeric day, hh specifies the two-digit numeric hour, mm specifies the two-digit numeric minutes. Optionally cc specifies the first two digits of the year, and yy specifies the last two digits of the year.Other Unix and Unix-like systems may set different options or date formats for date, for example, on some systems to set the current date and time to September 8, 2004 01:22 you type:
date --set="20040908 01:22"
See also
- List of Unix programs
- Unix timeUnix timeUnix time, or POSIX time, is a system for describing instants in time, defined as the number of seconds elapsed since midnight Coordinated Universal Time of Thursday, January 1, 1970 , not counting leap seconds, which are declared by the International Earth Rotation and Reference Systems Service...
, i.e. number of seconds elapsed since midnight UTC of January 1, 1970 Epoch - time and dateTime and dateIn computing, time and date are commands that are used to display and set the current time and date of the operating system. Both commands are available in DOS, OS/2 and Microsoft Windows command line interpreters such as COMMAND.COM, cmd.exe and 4DOS/4NT. The Unix command date displays both the...
- CronCronCron is a time-based job scheduler in Unix-like computer operating systems. Cron enables users to schedule jobs to run periodically at certain times or dates...
process for scheduling jobs to run on a given date.
External links
- UNIX date command examples.