about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--NEWS8
-rw-r--r--manual/time.texi7
-rw-r--r--time/strftime_l.c2
4 files changed, 23 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index af78b366f5..64ed089867 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2019-01-24  TAMUKI Shoichi  <tamuki@linet.gr.jp>
+
+	[BZ #23758]
+	* manual/time.texi (strftime): Document "%Ey".
+	* time/strftime_l.c (__strftime_internal): Set the default width
+	padding with zero of "%Ey" to 2.
+
 2019-01-24  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* support/xsigstack.c (MAP_NORESERVE, MAP_STACK): Define if they
diff --git a/NEWS b/NEWS
index d863d80f3a..aec18367a4 100644
--- a/NEWS
+++ b/NEWS
@@ -52,6 +52,14 @@ Major new features:
     - C-SKY ABIV2 soft-float little-endian
     - C-SKY ABIV2 hard-float little-endian
 
+* strftime's default formatting of a locale's alternative year (%Ey)
+  has been changed to zero-pad the year to a minimum of two digits,
+  like "%y".  This improves the display of Japanese era years during
+  the first nine years of a new era, and is expected to be harmless
+  for all other locales (only Japanese locales regularly have
+  alternative year numbers less than 10).  Zero-padding can be
+  overridden with the '_' or '-' flags (which are GNU extensions).
+
 Deprecated and removed features, and other changes affecting compatibility:
 
 * The glibc.tune tunable namespace has been renamed to glibc.cpu and the
diff --git a/manual/time.texi b/manual/time.texi
index fd7781c531..03a8a0e10f 100644
--- a/manual/time.texi
+++ b/manual/time.texi
@@ -1568,6 +1568,13 @@ The preferred time of day representation for the current locale.
 The year without a century as a decimal number (range @code{00} through
 @code{99}).  This is equivalent to the year modulo 100.
 
+If the @code{E} modifier is specified (@code{%Ey}), instead produces
+the year number according to a locale-specific alternative calendar.
+Unlike @code{%y}, the number is @emph{not} reduced modulo 100.
+However, by default it is zero-padded to a minimum of two digits (this
+can be overridden by an explicit field width or by the @code{_} and
+@code{-} flags).
+
 @item %Y
 The year as a decimal number, using the Gregorian calendar.  Years
 before the year @code{1} are numbered @code{0}, @code{-1}, and so on.
diff --git a/time/strftime_l.c b/time/strftime_l.c
index 7ba4179de3..cbe08e7afb 100644
--- a/time/strftime_l.c
+++ b/time/strftime_l.c
@@ -1294,7 +1294,7 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format,
 	      if (era)
 		{
 		  int delta = tp->tm_year - era->start_date[0];
-		  DO_NUMBER (1, (era->offset
+		  DO_NUMBER (2, (era->offset
 				 + delta * era->absolute_direction));
 		}
 #else