diff options
author | Jim Meyering <jim@meyering.net> | 1996-04-05 23:33:09 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 1996-04-05 23:33:09 +0000 |
commit | 921fc8c5991b092844be9da84e9ae12a5e1d7bab (patch) | |
tree | b8760c905c98d9fd1550cb6d56b8504416026087 | |
parent | f2fc5d0435206e297da5cb1ff89e9c0abda835a3 (diff) | |
download | gnulib-921fc8c5991b092844be9da84e9ae12a5e1d7bab.tar.gz |
(sun_week): Make %U work properly.
Before, `date -d '1 Jan 1995' +%U' output `00'. Now it prints `01'.
-rw-r--r-- | lib/strftime.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/strftime.c b/lib/strftime.c index e6b0c5a47c..5cf5f0d17b 100644 --- a/lib/strftime.c +++ b/lib/strftime.c @@ -242,13 +242,12 @@ sun_week (tm) { int dl; - /* Set `dl' to the day in the year of the last day of the week previous - to the one containing the day specified in TM. If the day specified - in TM is in the first week of the year, `dl' will be negative or 0. - Otherwise, calculate the number of complete weeks before our week - (dl / 7) and add any partial week at the start of the year (dl % 7). */ + /* %U Week of the year (Sunday as the first day of the week) as a decimal + number [00-53]. All days in a new year preceding the first Sunday are + considered to be in week 0. */ + dl = tm->tm_yday - tm->tm_wday; - return dl <= 0 ? 0 : dl / 7 + (dl % 7 != 0); + return dl < 0 ? 0 : dl / 7 + 1; } /* Return the week in the year of the time in TM, with the weeks |