]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/datetime.cpp
Compilation fix (missing headers).
[wxWidgets.git] / src / common / datetime.cpp
index 3ef1e1e6f18489a29373d3f46e88937081f37270..d796e6e12743cb498ad38cfd90c4ccc80993cfc4 100644 (file)
@@ -13,7 +13,7 @@
 //               so long as the above copyright and this permission statement
 //               are retained in all copies.
 //
 //               so long as the above copyright and this permission statement
 //               are retained in all copies.
 //
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 /*
 ///////////////////////////////////////////////////////////////////////////////
 
 /*
     #undef HAVE_STRPTIME
 #endif // broken strptime()
 
     #undef HAVE_STRPTIME
 #endif // broken strptime()
 
+#if defined(__MWERKS__) && wxUSE_UNICODE
+    #include <wtime.h>
+#endif
+
 #if !defined(WX_TIMEZONE) && !defined(WX_GMTOFF_IN_TM)
     #if defined(__BORLANDC__) || defined(__MINGW32__) || defined(__VISAGECPP__)
         #define WX_TIMEZONE _timezone
     #elif defined(__MWERKS__)
         long wxmw_timezone = 28800;
         #define WX_TIMEZONE wxmw_timezone
 #if !defined(WX_TIMEZONE) && !defined(WX_GMTOFF_IN_TM)
     #if defined(__BORLANDC__) || defined(__MINGW32__) || defined(__VISAGECPP__)
         #define WX_TIMEZONE _timezone
     #elif defined(__MWERKS__)
         long wxmw_timezone = 28800;
         #define WX_TIMEZONE wxmw_timezone
-    #elif defined(__DJGPP__)
+    #elif defined(__DJGPP__) || defined(__WINE__)
         #include <sys/timeb.h>
         #include <values.h>
         static long wxGetTimeZone()
         #include <sys/timeb.h>
         #include <values.h>
         static long wxGetTimeZone()
@@ -258,7 +262,8 @@ wxDateTime::wxDateTime_t GetNumOfDaysInMonth(int year, wxDateTime::Month month)
     return daysInMonth[wxDateTime::IsLeapYear(year)][month];
 }
 
     return daysInMonth[wxDateTime::IsLeapYear(year)][month];
 }
 
-// ensure that the timezone variable is set by calling localtime
+// returns the time zone in the C sense, i.e. the difference UTC - local
+// (in seconds)
 static int GetTimeZone()
 {
     // set to TRUE when the timezone is set
 static int GetTimeZone()
 {
     // set to TRUE when the timezone is set
@@ -266,20 +271,25 @@ static int GetTimeZone()
 #ifdef WX_GMTOFF_IN_TM
     static long gmtoffset = LONG_MAX; // invalid timezone
 #endif
 #ifdef WX_GMTOFF_IN_TM
     static long gmtoffset = LONG_MAX; // invalid timezone
 #endif
-    
+
     wxCRIT_SECT_LOCKER(lock, gs_critsectTimezone);
 
     wxCRIT_SECT_LOCKER(lock, gs_critsectTimezone);
 
+    // ensure that the timezone variable is set by calling localtime
     if ( !s_timezoneSet )
     {
         // just call localtime() instead of figuring out whether this system
         // supports tzset(), _tzset() or something else
     if ( !s_timezoneSet )
     {
         // just call localtime() instead of figuring out whether this system
         // supports tzset(), _tzset() or something else
-        time_t     t = 0;
+        time_t t = 0;
         struct tm *tm;
 
         tm = localtime(&t);
         s_timezoneSet = TRUE;
         struct tm *tm;
 
         tm = localtime(&t);
         s_timezoneSet = TRUE;
+
 #ifdef WX_GMTOFF_IN_TM
 #ifdef WX_GMTOFF_IN_TM
-        gmtoffset = tm->tm_gmtoff;
+        // note that GMT offset is the opposite of time zone and so to return
+        // consistent results in both WX_GMTOFF_IN_TM and !WX_GMTOFF_IN_TM
+        // cases we have to negate it
+        gmtoffset = -tm->tm_gmtoff;
 #endif
     }
 
 #endif
     }
 
@@ -3231,7 +3241,7 @@ const wxChar *wxDateTime::ParseDate(const wxChar *date)
 
     // tokenize the string
     size_t nPosCur = 0;
 
     // tokenize the string
     size_t nPosCur = 0;
-    static const wxChar *dateDelimiters = _T(".,/-\t\n ");
+    static const wxChar *dateDelimiters = _T(".,/-\t\r\n ");
     wxStringTokenizer tok(p, dateDelimiters);
     while ( tok.HasMoreTokens() )
     {
     wxStringTokenizer tok(p, dateDelimiters);
     while ( tok.HasMoreTokens() )
     {