Thanks for reporting that. Although coreutils man pages lower priority
and because they are automatically generated they can't be perfect about
fonts, we can easily do better for date(1). I installed the attached,
which fixes that problem along with some others I noticed in the
neighborhood. Closing the coreutils bug report.From f3980d7cfa2181091ef53119d0907e5c9dcbc263 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Sun, 25 Jan 2026 18:50:33 -0800
Subject: [PATCH] doc: fix date(1) synopses etc
Font problem reported by Michael Aramini via Alejandro Colomar
<https://bugs.gnu.org/80258>. This patch also fixes some
longstanding confusion with date synopses.
* src/date.c (usage): Do not imply that only -u can be used with
MMDDhhmm..., and do not put misleading brackets around the latter.
---
doc/coreutils.texi | 37 ++++++++++++++++++-------------------
man/date.x | 6 ++++++
src/date.c | 4 ++--
3 files changed, 26 insertions(+), 21 deletions(-)
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
index 0d7757d14..a02e8d73b 100644
--- a/doc/coreutils.texi
+++ b/doc/coreutils.texi
@@ -15837,20 +15837,20 @@ Synopses:
@example
date [@var{option}]@dots{} [+@var{format}]
-date [-u|--utc|--universal] @c this avoids a newline in the output
-[ MMDDhhmm[[CC]YY][.ss] ]
+date [@var{option}]@dots{} @c Avoid a newline in the output.
+@var{mm}@var{dd}@var{hh}@var{mm}[[@var{cc}]@var{yy}][.@var{ss}]
@end example
The @command{date} command displays the date and time.
With the @option{--set} (@option{-s}) option, or with
-@samp{MMDDhhmm[[CC]YY][.ss]},
-it sets the date and time.
+@samp{@var{mm}@var{dd}@var{hh}@var{mm}[[@var{cc}]@var{yy}][.@var{ss}]},
+it sets the date and time before displaying it.
@vindex LC_TIME
-Invoking @command{date} with no @var{format} argument is equivalent to invoking
+Invoking @command{date} with no operands is equivalent to invoking
it with a default format that depends on the @env{LC_TIME} locale category.
-In the default C locale, this format is @samp{'+%a %b %e %H:%M:%S %Z %Y'},
-so the output looks like @samp{Thu Jul @ 9 17:00:00 EDT 2020}.
+In the default C locale, this format is @samp{+%a %b %e %H:%M:%S %Z %Y},
+so the output looks like @samp{Thu Jul @ 9 17:00:00 EDT 2026}.
@vindex TZ
Normally, @command{date} uses the time zone rules indicated by the
@@ -15878,8 +15878,7 @@ is not set. @xref{TZ Variable,, Specifying the Time Zone with
@cindex time formats
@cindex formatting times
If given an argument that starts with a @samp{+}, @command{date} prints the
-current date and time (or the date and time specified by the
-@option{--date} option, see below) in the format defined by that argument,
+date and time in the format defined by that argument,
which is similar to that of the @code{strftime} function. Except for
conversion specifiers, which start with @samp{%}, characters in the
format string are printed unchanged. The conversion specifiers are
@@ -16283,26 +16282,26 @@ hardware clock may need to be updated from the system clock, which
might not happen automatically on your system.
To set the clock, you can use the @option{--set} (@option{-s}) option
-(@pxref{Options for date}). To set the clock without using GNU
-extensions, you can give @command{date} an argument of the form
-@samp{MMDDhhmm[[CC]YY][.ss]} where each two-letter
+(@pxref{Options for date}) or a operand of the form
+@samp{@var{mm}@var{dd}@var{hh}@var{mm}[[@var{cc}]@var{yy}][.@var{ss}]}
+where each two-letter
component stands for two digits with the following meanings:
@table @var
-@item MM
-month
-@item DD
+@item mm
+month (this is the first @var{mm})
+@item dd
day within month
@item hh
hour
@item mm
-minute
-@item CC
+minute (this is the second @var{mm})
+@item cc
first two digits of year (optional)
-@item YY
+@item yy
last two digits of year (optional)
@item ss
-second (optional)
+second (optional; this is a GNU extension)
@end table
The @option{--date} and @option{--set} options may not be used with an
diff --git a/man/date.x b/man/date.x
index bbcbafcb6..991facd5f 100644
--- a/man/date.x
+++ b/man/date.x
@@ -1,5 +1,11 @@
[NAME]
date \- print or set the system date and time
+[SYNOPSIS]
+.B date
+[\fI\,OPTION\/\fR]... [\fB+\fR\fI\,FORMAT\/\fR]
+.br
+.B date
+[\fI\,OPTION\/\fR]... \fIMMDDhhmm\/\fR[[\fI\,CC\/\fR]\fI\,YY\/\fR][\fB.\fI\,ss\/\fR]
[DESCRIPTION]
.\" Add any additional description here
[DATE STRING]
diff --git a/src/date.c b/src/date.c
index 36c863a42..e53566729 100644
--- a/src/date.c
+++ b/src/date.c
@@ -128,12 +128,12 @@ usage (int status)
{
printf (_("\
Usage: %s [OPTION]... [+FORMAT]\n\
- or: %s [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]\n\
+ or: %s [OPTION]... MMDDhhmm[[CC]YY][.ss]\n\
"),
program_name, program_name);
fputs (_("\
Display date and time in the given FORMAT.\n\
-With -s, or with [MMDDhhmm[[CC]YY][.ss]], set the date and time.\n\
+With -s, or with MMDDhhmm[[CC]YY][.ss], set the date and time first.\n\
"), stdout);
emit_mandatory_arg_note ();
--
2.51.0