Browse Source

strptime: fix am/pm converting to 24-hour system

Fix the issue of parsing 08:00AM, which currently gives a 20:00 representation.
master
Alexey Lapshin 2 years ago
committed by Corinna Vinschen
parent
commit
acf176104f
  1. 11
      newlib/libc/time/strptime.c

11
newlib/libc/time/strptime.c

@ -292,11 +292,12 @@ strptime_l (const char *buf, const char *format, struct tm *timeptr,
ret = match_string (&buf, _ctloc (am_pm), locale);
if (ret < 0)
return NULL;
if (timeptr->tm_hour == 0) {
if (ret == 1)
timeptr->tm_hour = 12;
} else
timeptr->tm_hour += 12;
if (timeptr->tm_hour > 12)
return NULL;
else if (timeptr->tm_hour == 12)
timeptr->tm_hour = ret * 12;
else
timeptr->tm_hour += ret * 12;
break;
case 'q' : /* quarter year - GNU extension */
ret = strtol_l (buf, &s, 10, locale);

Loading…
Cancel
Save