date.c: improve guess between timezone offset and year.

When match_digit() guesses a four-digit string to tell if it is
a year or a timezone, it did not consider that some real-world
places have UTC offsets equal to +1400.

   $ date; TZ=UTC0 date; TZ=Pacific/Kiritimati date
   Wed Jun  7 23:25:42 PDT 2006
   Thu Jun  8 06:25:42 UTC 2006
   Thu Jun  8 20:25:42 LINT 2006

Signed-off-by: Paul Eggert <eggert@CS.UCLA.EDU>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Paul Eggert 2006-06-08 14:54:13 -07:00 committed by Junio C Hamano
parent 7612a1efdb
commit 7122f82f56

2
date.c
View File

@ -369,7 +369,7 @@ static int match_digit(const char *date, struct tm *tm, int *offset, int *tm_gmt
/* Four-digit year or a timezone? */ /* Four-digit year or a timezone? */
if (n == 4) { if (n == 4) {
if (num <= 1200 && *offset == -1) { if (num <= 1400 && *offset == -1) {
unsigned int minutes = num % 100; unsigned int minutes = num % 100;
unsigned int hours = num / 100; unsigned int hours = num / 100;
*offset = hours*60 + minutes; *offset = hours*60 + minutes;