- Order:
- Duration: 3:26
- Published: 02 Sep 2009
- Uploaded: 05 Jun 2011
- Author: metalx1000
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.
{|class="wikitable" |+Format specifiers (format string starts with +) ! Specifier ! Description ! width="150"| Values/Example |- !colspan=3| 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 || |- !colspan=3| Week |- | %U ||week number Sunday as first day of week ||01–53 |- | %W ||week number Monday as first day of week ||01–53 |- | %V ||week of the year ||01–53 |- !colspan=3| Month |- |%m ||mm month || |- |%h ||Mon || |- |%b ||Mon, locale's abbreviated || |- |%B ||locale's full month, variable length || |- !colspan=3| 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 || |- !colspan=3| Century |- | %C ||cc century ||00–99 |- !colspan=3| Date |- | %D ||mm/dd/yy || // |- | %x ||locale's date representation (mm/dd/yy) || // |- | %F ||%Y-%m-%d || -- |- !colspan=3| 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 || |- !colspan=3| Minutes |- | %M ||MM minutes || |- !colspan=3| 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 |- !colspan=3| 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) |- !colspan=3| Date and Time |- | %c ||locale's date and time ||Sat Nov 04 12:02:33 EST 1989 |- !colspan=3| Time zone |- | %z ||-zzzz RFC-822 style numeric timezone || -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.
-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 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.
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 20060702date +"%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 20060604date +"%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 20060711date +"%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 20070704To 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
Category:Standard Unix programs Category:Unix SUS2008 utilities
This text is licensed under the Creative Commons CC-BY-SA License. This text was originally published on Wikipedia and was developed by the Wikipedia community.