Commit Diff


commit - 6452f95be69efb9ce54158b3ddb9c7c3797e652f
commit + 7f420fb3731a6adc56ab96a934c1f77ffee48e86
blob - 76f4a262117ea3f2d4b400238ecec9ba178c9afc
blob + c299202e30dc87e66320f69b441b4d68ea767903
--- src/lib9/date.c
+++ src/lib9/date.c
@@ -12,12 +12,23 @@ static void
 dotz(void)
 {
 	time_t t;
+	struct tm *gtm;
+	struct tm tm;
 
 	if(didtz)
 		return;
 	t = time(0);
-	tzdelta = t - mktime(gmtime(&t));
 	strftime(tzone, sizeof tzone, "%Z", localtime(&t));
+	tm = *localtime(&t);	/* set local time zone field */
+	gtm = gmtime(&t);
+	tm.tm_sec = gtm->tm_sec;
+	tm.tm_min = gtm->tm_min;
+	tm.tm_hour = gtm->tm_hour;
+	tm.tm_mday = gtm->tm_mday;
+	tm.tm_mon = gtm->tm_mon;
+	tm.tm_year = gtm->tm_year;
+	tm.tm_wday = gtm->tm_wday;
+	tzdelta = t - mktime(&tm);
 }
 
 static void