← Back to team overview

zorba-coders team mailing list archive

[Merge] lp:~zorba-coders/zorba/bug-988412 into lp:zorba

 

Matthias Brantner has proposed merging lp:~zorba-coders/zorba/bug-988412 into lp:zorba.

Requested reviews:
  Matthias Brantner (matthias-brantner)
  William Candillon (wcandillon)
Related bugs:
  Bug #988412 in Zorba: "date:current-dateTime daylight saving "
  https://bugs.launchpad.net/zorba/+bug/988412

For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/bug-988412/+merge/103523

fix for bug #988412 (date:current-dateTime daylight saving)
-- 
https://code.launchpad.net/~zorba-coders/zorba/bug-988412/+merge/103523
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'ChangeLog'
--- ChangeLog	2012-04-24 12:39:38 +0000
+++ ChangeLog	2012-04-25 17:27:26 +0000
@@ -30,6 +30,7 @@
   * Fixed performance problem with the findNodeSources function of the no-copy rule
   * Fixed bug #872234 (prevent a rewritting to take place in case of sequential expr)
   * Fixed bug #906494 (default compile with D_FILE_OFFSET_BITS=64)
+  * Fixed bug #988412 (date:current-dateTime daylight saving)
   * Fixed bug #912586, #912593 and #912722 (assertion failures with lax validation)
   * Fixed bug #921458 (file:read-text-lines() blocking)
   * Fixed bug #981405 (do not hoist expr containing try-catch variables out of the

=== modified file 'modules/com/zorba-xquery/www/modules/datetime.xq.src/datetime.cpp'
--- modules/com/zorba-xquery/www/modules/datetime.xq.src/datetime.cpp	2012-04-24 12:39:38 +0000
+++ modules/com/zorba-xquery/www/modules/datetime.xq.src/datetime.cpp	2012-04-25 17:27:26 +0000
@@ -32,21 +32,23 @@
     long&           timezone,
     unsigned short& millitm)
 {
+  int lSummerTimeShift = 0;
 #if defined (WIN32)
   struct _timeb timebuffer;
   _ftime_s( &timebuffer );
   localtime_s(&gmtm, &timebuffer.time); //thread safe localtime on Windows
+  lSummerTimeShift = -timebuffer.timezone * 60;
+  if (gmtm.tm_isdst != 0)
+    lSummerTimeShift += 3600;
 #else
   struct timeb timebuffer;
   ftime( &timebuffer );
   localtime_r(&timebuffer.time, &gmtm); //thread safe localtime on Linux
+  localtime_r(&timebuffer.time, &gmtm); //thread safe localtime on Linux
+  lSummerTimeShift = gmtm.tm_gmtoff;
 #endif
 
-  int lSummerTimeShift = 0;
-  if (gmtm.tm_isdst != 0)
-    lSummerTimeShift = 3600;
-
-  timezone = -timebuffer.timezone * 60 + lSummerTimeShift; // in seconds
+  timezone = lSummerTimeShift; // in seconds
   millitm = timebuffer.millitm;
 }
 


Follow ups