date(1) — USER COMMANDS
NAME
date − print and set the date
SYNOPSIS
date [ -n ] [ -u ] [ + format ]
date [ -n ] [ -a [ − ] sss.fff ] [ −u ] [[ mmdd]HHMM | mmddHHMM[cc]yy ]
DESCRIPTION
If no argument is given, or if the argument begins with +, the current date and time are printed. Otherwise, the current date is set (only by super-user). If in.timed is running, the date will be set via the time daemon. Otherwise, it will be set locally.
−a [ − ] sss.fff
Slowly adjust the time by sss.fff seconds (fff represents fractions of a second). This adjustment can be positive or negative. The system’s clock will be sped up or slowed down until it has drifted by the number of seconds specified.
−n Do not set the date via the time daemon.
−u Display (or set) the date in Greenwich Mean Time (GMT—universal time), bypassing the normal conversion to (or from) local time.
mm Month number
dd Day number in the month
HH Hour number (24 hour system)
MM Minute number
cc Century minus one
yy Last 2 digits of the year number
The month, day, year, and century may be omitted; the current values are supplied as defaults. For example:
date 10080045
sets the date to Oct 8, 12:45 AM. The current year is the default because no year is supplied. The system operates in GMT. date takes care of the conversion to and from local standard and daylight time. Only the super-user may change the date. After successfully setting the date and time, date displays the new date according to the default format. The date command uses TZ to determine the correct time zone information [see environ(5)].
+ format If the argument begins with +, the output of date is under the control of the user. Each Field Descriptor, described below, is preceded by % and is replaced in the output by its corresponding value. A single % is encoded by %%. All other characters are copied to the output without change. The string is always terminated with a new-line character. If the argument contains embedded blanks it must be quoted (see the EXAMPLE section).
Specifications of native language translations of month and weekday names are supported. The month and weekday names used for a language are based on the locale specified by the environment variables LC_TIME and LANG (see environ(5)).
The current date and time can be set and displayed using single-byte or multibyte characters in accordance with the customary local format. Characters from supplementary code sets can be used in +format.
The month and weekday names used for a language are taken from a file whose format is specified in strftime(4). This file also defines country-specific date and time formats such as %c, which specifies the default date format. The following form is the default for %c:
%a %b %e %T %Z %Y
e.g., Fri Dec 23 10:10:42 EST 1988
Field Descriptors (must be preceded by a %):
a abbreviated weekday name
A full weekday name
b abbreviated month name
B full month name
c country-specific date and time format
d day of month − 01 to 31
D date as %m/%d/%y
e day of month − 1 to 31 (single digits are preceded by a blank)
h abbreviated month name (alias for %b)
H hour − 00 to 23
I hour − 01 to 12
j day of year − 001 to 366
m month of year − 01 to 12
M minute − 00 to 59
n insert a new-line character
p string containing ante meridiem or post meridiem indicator (by default, AM or PM)
r time as %I:%M:%S %p
R time as %H:%M
S second − 00 to 61, allows for leap seconds
t insert a tab character
T time as %H:%M:%S
U week number of year (Sunday as the first day of the week) − 00 to 53
w day of week − Sunday = 0
W week number of year (Monday as the first day of the week) − 00 to 53
x Country-specific date format
X Country-specific time format
y year within century − 00 to 99
Y year as ccyy (4 digits)
Z timezone name
Date and Time Daemon Interaction
The following summarizes the effects of setting the date on a machine which is running a time daemon.
On a machine on which the time daemon is running as a master, you type:
date some_date
The time is propagated to the slaves immediatedly.
date −n some_date
The time is not propagated to the slaves immediately but will be propagated on the next master initiated network time synchronization.
On a machine on which the time daemon is running as a slave, you type:
date some_date
The time is propagated to, and resets the master’s notion of network time.
date −n some_date
The local time is set to some_date, but only until the next network time synchronization at which point the machine’s time will revert to network time.
EXAMPLE
The command
date ’+DATE: %m/%d/%y%nTIME: %H:%M:%S’
generates as output:
DATE: 08/01/76
TIME: 14:45:05
DIAGNOSTICS
Exit Codes: 0 - success; 1 - failure; 2 - failed setting the date via the time daemon so the date was set locally.
No permission You are not the super-user and you try to change the date.
bad conversion The date set is syntactically incorrect.
NOTES
Should you need to change the date while the system is running multi-user, use the datetime command of sysadm(1M).
If you attempt to set the current date to one of the dates that the standard and alternate time zones change (for example, the date that daylight time is starting or ending), and you attempt to set the time to a time in the interval between the end of standard time and the beginning of the alternate time (or the end of the alternate time and the beginning of standard time), the results are unpredictable.
The current date and time can be set and displayed using single-byte or multibyte characters in accordance with the customary local format. Characters from supplementary code sets can be used in +format.
SEE ALSO
sysadm(1M), in.timed(1M), strftime(4), environ(5).
— Essential Utilities