]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed bug in wxDateTime::Set(jdn) when DST was in effect
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 23 Jun 2004 21:53:15 +0000 (21:53 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 23 Jun 2004 21:53:15 +0000 (21:53 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27983 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/common/datetime.cpp

index 0f387c8a356227f765664f0bac839137ba3eaf22..1f6c6e447bff77af9c68852cd5efff4cc5ba619f 100644 (file)
@@ -108,6 +108,7 @@ All:
 
 - number of fixes to wxPluginManager (Rick Brice, Hans Van Leemputten)
 - fixed memory leak in wxURL when using a proxy (Steven Van Ingelgem)
+- fixed bug in wxDateTime::Set(jdn) when DST was in effect
 - it's now possible to use msgids in other languages than English with
   wxLocale (based on patch by Stefan Kowski)
 
index 9c14cc43db07e0f51dca7e3d9af7db60f48f9577..2b208928df69644e5bb338f75205c87088e60514 100644 (file)
@@ -1287,6 +1287,17 @@ wxDateTime& wxDateTime::Set(double jdn)
 
     jdn *= MILLISECONDS_PER_DAY;
 
+    // JDNs always suppose an UTC date, so bring it back to local time zone
+    // (also see GetJulianDayNumber() implementation)
+    long tzDiff = GetTimeZone();
+    if ( IsDST() == 1 )
+    {
+        // FIXME: again, we suppose that DST is always one hour
+        tzDiff -= 3600;
+    }
+
+    jdn += tzDiff*1000; // tzDiff is in seconds
+
     m_time.Assign(jdn);
 
     return *this;
@@ -1904,8 +1915,8 @@ wxDateTime& wxDateTime::SetToYearDay(wxDateTime::wxDateTime_t yday)
 
 double wxDateTime::GetJulianDayNumber() const
 {
-    // JDN are always expressed for the GMT dates
-    Tm tm(ToTimezone(GMT0).GetTm(GMT0));
+    // JDN are always expressed for the UTC dates
+    Tm tm(ToTimezone(UTC).GetTm(UTC));
 
     double result = GetTruncatedJDN(tm.mday, tm.mon, tm.year);