.\"
.\" @(#)cal.1 8.1 (Berkeley) 6/6/93
.\"
-.TH CAL 1 "June 2011" "util-linux" "User Commands"
+.TH CAL 1 "January 2018" "util-linux" "User Commands"
.SH NAME
cal \- display a calendar
.SH SYNOPSIS
.B cal
-[\fIoptions\fR] [[[\fIday\fR] \fImonth\fR] \fIyear\fR]
+[options]
+.RI [[[ day ] " month" ] " year" ]
+.br
+.B cal
+[options]
+.RI [ "timestamp" | "monthname" ]
.SH DESCRIPTION
.B cal
displays a simple calendar. If no arguments are specified, the current
month is displayed.
+.sp
+The \fImonth\fR may be specified as a number (1-12), as a month name or as an
+abbreviated month name according to the current locales.
+.sp
+Two different calendar systems are used, Gregorian and Julian. These are
+nearly identical systems with Gregorian making a small adjustment to the
+frequency of leap years; this facilitates improved synchronization with solar
+events like the equinoxes. The Gregorian calendar reform was introduced in
+1582, but its adoption continued up to 1923. By default
+.B cal
+uses the adoption date of 3 Sept 1752. From that date forward the Gregorian
+calendar is displayed; previous dates use the Julian calendar system. 11 days
+were removed at the time of adoption to bring the calendar in sync with solar
+events. So Sept 1752 has a mix of Julian and Gregorian dates by which the 2nd
+is followed by the 14th (the 3rd through the 13th are absent).
+.sp
+Optionally, either the proleptic Gregorian calendar or the Julian calendar may
+be used exclusively.
+.RB See\ \-\-reform\ below.
.SH OPTIONS
.TP
\fB\-1\fR, \fB\-\-one\fR
\fB\-3\fR, \fB\-\-three\fR
Display three months spanning the date.
.TP
+\fB\-n , \-\-months\fR \fInumber\fR
+Display \fInumber\fR of months, starting from the month containing the date.
+.TP
+\fB\-S, \fB\-\-span\fR
+Display months spanning the date.
+.TP
\fB\-s\fR, \fB\-\-sunday\fR
Display Sunday as the first day of the week.
.TP
\fB\-m\fR, \fB\-\-monday\fR
Display Monday as the first day of the week.
.TP
+\fB\-v\fR, \fB\-\-vertical\fR
+Display using a vertical layout (aka ncal mode).
+.TP
+.B \-\-iso
+Display the proleptic Gregorian calendar exclusively. This option does not affect
+week numbers and the first day of the week.
+.RB See\ \-\-reform\ below.
+.TP
\fB\-j\fR, \fB\-\-julian\fR
-Display Julian dates (days one-based, numbered from January 1).
+Use day-of-year numbering for all calendars. These are also called ordinal
+days. Ordinal days range from 1 to 366. This option does not switch from the
+Gregorian to the Julian calendar system, that is controlled by the
+.BR \-\-reform\ option.
+.sp
+Sometimes Gregorian calendars using ordinal dates are referred to as Julian
+calendars. This can be confusing due to the many date related conventions that
+use Julian in their name: (ordinal) julian date, julian (calendar) date,
+(astronomical) julian date, (modified) julian date, and more. This option is
+named julian, because ordinal days are identified as julian by the POSIX
+standard. However, be aware that
+.B cal
+also uses the Julian calendar system.
+.RB See\ DESCRIPTION\ above.
+.TP
+.BI \-\-reform\ val
+This option sets the adoption date of the Gregorian calendar reform. Calendar
+dates previous to reform use the Julian calendar system. Calendar dates
+after reform use the Gregorian calendar system. The argument
+.I val
+can be:
+.RS
+.IP \(bu 2
+.I 1752
+- sets 3 September 1752 as the reform date (default).
+This is when the Gregorian calendar reform was adopted by the British Empire.
+.IP \(bu 2
+.I gregorian
+- display Gregorian calendars exclusively. This special placeholder sets the
+reform date below the smallest year that
+.B cal
+can use; meaning all calendar output uses the Gregorian calendar system. This
+is called the proleptic Gregorian calendar, because dates prior to the calendar
+system's creation use extrapolated values.
+.IP \(bu 2
+.I iso
+- alias of
+.IR gregorian .
+The ISO 8601 standard for the representation of dates and times in information
+interchange requires using the proleptic Gregorian calendar.
+.IP \(bu 2
+.I julian
+- display Julian calendars exclusively. This special placeholder sets the reform date above the largest year that
+.B cal
+can use; meaning all
+calendar output uses the Julian calendar system.
+.PP
+.RB See\ \%DESCRIPTION\ above.
+.RE
.TP
\fB\-y\fR, \fB\-\-year\fR
Display a calendar for the whole year.
.TP
-\fB\-w\fR, \fB\-\-week\fR[\fI=number\fR]
-Display week numbers in the calendar (US or ISO-8601).
-.TP
-\fB\-\-color\fR [\fIwhen\fR]
-Colorize output. The
-.I when
-can be
-.IR never ,
-.IR auto ,
-or
-.IR always .
-Never will turn off colorizing in all situations. Auto is default, and
-it will make colorizing to be in use if output is done to terminal.
-Always will allow colors to be outputed when
-.B cal
-outputs to pipe, or is called from a script.
+\fB\-Y, \fB\-\-twelve\fR
+Display a calendar for the next twelve months.
+.TP
+\fB\-w\fR, \fB\-\-week\fR[=\fInumber\fR]
+Display week numbers in the calendar (US or ISO-8601). See NOTES section
+for more details.
+.TP
+\fB\-\-color\fR[=\fIwhen\fR]
+Colorize the output. The optional argument \fIwhen\fP
+can be \fBauto\fR, \fBnever\fR or \fBalways\fR. If the \fIwhen\fR argument is omitted,
+it defaults to \fBauto\fR. The colors can be disabled; for the current built-in default
+see the \fB\-\-help\fR output. See also the \fBCOLORS\fR section.
.TP
\fB\-V\fR, \fB\-\-version\fR
Display version information and exit.
\fB\-h\fR, \fB\-\-help\fR
Display help text and exit.
.SH PARAMETERS
-A single parameter specifies the year to be displayed; note the
-year must be fully specified:
+.TP
+\fBSingle digits-only parameter (e.g., 'cal 2020')\fR
+Specifies the \fIyear\fR to be displayed; note the year must be fully specified:
.B "cal 89"
will not display a calendar for 1989.
-.PP
-Two parameters denote the month (1 - 12) and year.
-.PP
-Three parameters denote the day (1-31), month and year, and the day will be
-highlighted if the calendar is displayed on a terminal. If no parameters are
+.TP
+\fBSingle string parameter (e.g., 'cal tomorrow' or 'cal August')\fR
+Specifies \fItimestamp\fR or a \fImonth name\fR (or abbreviated name) according to the current
+locales.
+.sp
+The special placeholders are accepted when parsing timestamp, "now" may be used
+to refer to the current time, "today", "yesterday", "tomorrow" refer to of the
+current day, the day before or the next day, respectively.
+.sp
+The relative date specifications are also accepted, in this case "+" is
+evaluated to the current time plus the specified time span. Correspondingly, a
+time span that is prefixed with "-" is evaluated to the current time minus the
+specified time span, for example '+2days'. Instead of prefixing the time span
+with "+" or "-", it may also be suffixed with a space and the word "left" or
+"ago" (for example '1 week ago').
+.TP
+\fBTwo parameters (e.g., 'cal 11 2020')\fR
+Denote the \fImonth\fR (1 - 12) and \fIyear\fR.
+.TP
+\fBThree parameters (e.g., 'cal 25 11 2020')\fR
+Denote the \fIday\fR (1-31), \fImonth and \fIyear\fR, and the day will be
+highlighted if the calendar is displayed on a terminal. If no parameters are
specified, the current month's calendar is displayed.
+.SH NOTES
+A year starts on January 1. The first day of the week is determined by the
+locale or the
+.BR \-\-sunday \ and \ \-\-monday \ options.
.PP
-A year starts on Jan 1. The first day of the week is determined by the
-locale.
-.PP
-The week numbering depends on the choice of the first day of the week. If Sunday
-(the default) is used for the first day of the week, then the customary North
-American numbering will be used, i.e. the first Sunday of the year starts the
-first week. If Monday is selected, then the ISO-8601 standard week numbering
-is used, where the first Thursday of the year is in week number 1.
+The week numbering depends on the choice of the first day of the week. If it
+is Sunday then the customary North American numbering is used, where 1 January
+is in week number 1. If it is Monday (\fB\-m\fR) then the ISO 8601 standard week
+numbering is used, where the first Thursday is in week number 1.
+.SH COLORS
+Implicit coloring can be disabled as follows:
+.RS
+
+.br
+.B touch /etc/terminal-colors.d/cal.disable
+.br
+
+.RE
+See
+.BR terminal-colors.d (5)
+for more details about colorization configuration.
.SH BUGS
.PP
-The
+The default
.B cal
-is using for Gregorian reformation the date of 1752 on the 3rd of
-September when it happen in Great Britain and it's colonies (including
-what is now the USA). Ten days following that date were eliminated by
-the reformation, so the calendar for that month is a bit unusual. The
-history when calendar reformation happen in different locales is ignored.
+output uses 3 September 1752 as the Gregorian calendar reform date. The
+historical reform dates for the other locales, including its introduction in
+October 1582, are not implemented.
.PP
Alternative calendars, such as the Umm al-Qura, the Solar Hijri, the Ge'ez,
or the lunisolar Hindu, are not supported.
A cal command appeared in Version 6 AT&T UNIX.
.SH AVAILABILITY
The cal command is part of the util-linux package and is available from
-ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
+https://www.kernel.org/pub/linux/utils/util-linux/.