diff options
Diffstat (limited to 'time/strptime.c')
-rw-r--r-- | time/strptime.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/time/strptime.c b/time/strptime.c index 5f8271e250..9499e0f684 100644 --- a/time/strptime.c +++ b/time/strptime.c @@ -235,7 +235,7 @@ day_of_the_week (struct tm *tm) + (((corr_year / 4) / 25) / 4) + __mon_yday[0][tm->tm_mon] + tm->tm_mday - 1); - tm->tm_wday = wday % 7; + tm->tm_wday = ((wday % 7) + 7) % 7; } /* Compute the day of the year. */ @@ -830,8 +830,14 @@ strptime_internal (buf, format, tm, decided) if (have_I && is_pm) tm->tm_hour += 12; - if (want_century && century != -1) - tm->tm_year = tm->tm_year % 100 + (century - 19) * 100; + if (century != -1) + { + if (want_century) + tm->tm_year = tm->tm_year % 100 + (century - 19) * 100; + else + /* Only the century, but not the year. Strange, but so be it. */ + tm->tm_year = (century - 19) * 100; + } if (want_xday && !have_wday) { if ( !(have_mon && have_mday) && have_yday) { |