diff -r 77938288732a sys/src/cmd/seconds.c --- a/sys/src/cmd/seconds.c Thu Dec 05 00:16:15 2019 -0800 +++ b/sys/src/cmd/seconds.c Fri Dec 06 10:57:45 2019 -0800 @@ -102,8 +102,6 @@ { int i, mer = HR24, bigval = -1; long flg = 0, ty; - char *p; - char upzone[32]; Datetok *tp; now = localtime(time(0)); /* default to local time (zone) */ @@ -143,13 +141,9 @@ break; case Dtz: case Tz: + /* tm2sec mangles timezones, so we do our own handling */ tm->tzoff = FROMVAL(tp); - /* tm2sec needs the name in upper case */ - strcpy(upzone, fields[i]); - for (p = upzone; *p; p++) - if (isascii(*p) && islower(*p)) - *p = toupper(*p); - strncpy(tm->zone, upzone, sizeof tm->zone); + snprint(tm->zone, sizeof(tm->zone), "GMT"); break; case Ignore: break; @@ -216,7 +210,7 @@ memset(&date, 0, sizeof date); if (prsabsdate(timestr, localtime(time(0)), &date) < 0) return -1; - return validtm(&date)? tm2sec(&date): -1; + return validtm(&date)? tm2sec(&date) - 60*date.tzoff: -1; } int