]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/datetime.cpp
Call CreateControl instead of CreateBase
[wxWidgets.git] / src / common / datetime.cpp
index 7ea7a574e3aaa6350c087e63631c76daf56e2670..2b208928df69644e5bb338f75205c87088e60514 100644 (file)
@@ -1287,6 +1287,17 @@ wxDateTime& wxDateTime::Set(double jdn)
 
     jdn *= MILLISECONDS_PER_DAY;
 
 
     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;
     m_time.Assign(jdn);
 
     return *this;
@@ -1326,6 +1337,7 @@ wxDateTime& wxDateTime::ResetTime()
 wxDateTime& wxDateTime::SetFromDOS(unsigned long ddt)
 {
     struct tm tm;
 wxDateTime& wxDateTime::SetFromDOS(unsigned long ddt)
 {
     struct tm tm;
+    InitTm(tm);
 
     long year = ddt & 0xFE000000;
     year >>= 25;
 
     long year = ddt & 0xFE000000;
     year >>= 25;
@@ -1903,8 +1915,8 @@ wxDateTime& wxDateTime::SetToYearDay(wxDateTime::wxDateTime_t yday)
 
 double wxDateTime::GetJulianDayNumber() const
 {
 
 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);
 
 
     double result = GetTruncatedJDN(tm.mday, tm.mon, tm.year);