changeset 1448:37599e85bba8

Fix getting UTC time from formatted strings ( in uw_Basis_readUtc ). Corrects 2 things: - timezones with offsets not an integer number of hours - double correcting for daylight savings time
author Karn Kallio <kkallio@eka>
date Wed, 13 Apr 2011 00:04:41 -0430
parents 17393c5e2b90
children 0982f0242776
files src/c/urweb.c
diffstat 1 files changed, 1 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/c/urweb.c	Sat Apr 09 20:00:52 2011 -0400
+++ b/src/c/urweb.c	Wed Apr 13 00:04:41 2011 -0430
@@ -3763,23 +3763,13 @@
 uw_Basis_time *uw_Basis_readUtc(uw_context ctx, uw_Basis_string s) {
   struct tm stm = {};
   char *end = strchr(s, 0);
-  stm.tm_isdst = -1;
 
   if (strptime(s, TIME_FMT_PG, &stm) == end || strptime(s, TIME_FMT, &stm) == end) {
     uw_Basis_time *r = uw_malloc(ctx, sizeof(uw_Basis_time));
 
-    tzset();
-    stm.tm_hour -= timezone / (60 * 60);
-
-    r->seconds = mktime(&stm);
+    r->seconds = timegm(&stm);
     r->microseconds = 0;
 
-    localtime_r(&r->seconds, &stm);
-    if (stm.tm_isdst == 1) {
-      ++stm.tm_hour;
-      r->seconds = mktime(&stm);
-    }
-
     return r;
   }
   else