]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/datetime.cpp
Applied patch for ArtProvider.
[wxWidgets.git] / src / common / datetime.cpp
index ba9419b5c786ad6969968a13c42e6561e3503a3d..b211b4ee2d594689f5f9a08fdf43a75deece0184 100644 (file)
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
+// TODO: for $DEITY sake, someone please fix the #ifdef __WXWINCE__ everywhere,
+//       the proper way to do it is to implement (subset of) wxStrftime() for
+//       CE instead of this horror!!
+
 /*
  * Implementation notes:
  *
@@ -80,7 +84,9 @@
 #ifdef __WINDOWS__
     #include "wx/msw/wrapwin.h"
     #include <winnls.h>
-    #include <locale.h>
+    #ifndef __WXWINCE__
+        #include <locale.h>
+    #endif
 #endif
 
 #include "wx/datetime.h"
@@ -353,6 +359,7 @@ static long GetTruncatedJDN(wxDateTime::wxDateTime_t day,
             - JDN_OFFSET;
 }
 
+#ifndef __WXWINCE__
 // this function is a wrapper around strftime(3) adding error checking
 static wxString CallStrftime(const wxChar *format, const tm* tm)
 {
@@ -365,6 +372,7 @@ static wxString CallStrftime(const wxChar *format, const tm* tm)
 
     return wxString(buf);
 }
+#endif
 
 #ifdef HAVE_STRPTIME
 
@@ -1382,6 +1390,8 @@ wxDateTime& wxDateTime::Set(double jdn)
 
     jdn *= MILLISECONDS_PER_DAY;
 
+    m_time.Assign(jdn);
+
     // JDNs always suppose an UTC date, so bring it back to local time zone
     // (also see GetJulianDayNumber() implementation)
     long tzDiff = GetTimeZone();
@@ -1391,9 +1401,7 @@ wxDateTime& wxDateTime::Set(double jdn)
         tzDiff -= 3600;
     }
 
-    jdn += tzDiff*1000; // tzDiff is in seconds
-
-    m_time.Assign(jdn);
+    m_time += tzDiff*1000; // tzDiff is in seconds
 
     return *this;
 }
@@ -2834,11 +2842,16 @@ const wxChar *wxDateTime::ParseRfc822Date(const wxChar* date)
 }
 
 #ifdef __WINDOWS__
+
 // Get's current locale's date formatting string and stores it in fmt if
 // the locale is set; otherwise or in case of failure, leaves fmt unchanged
-void GetLocaleDateFormat(wxString *fmt)
+static void GetLocaleDateFormat(wxString *fmt)
 {
+    // there is no setlocale() under Windows CE, so just always query the
+    // system there
+#ifndef __WXWINCE__
     if ( strcmp(setlocale(LC_ALL, NULL), "C") != 0 )
+#endif
     {
         // The locale was programatically set to non-C. We assume that this was
         // done using wxLocale, in which case thread's current locale is also
@@ -2889,6 +2902,7 @@ void GetLocaleDateFormat(wxString *fmt)
         // try our luck with the default set above
     }
 }
+
 #endif // __WINDOWS__
 
 const wxChar *wxDateTime::ParseFormat(const wxChar *date,