// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "datetime.h"
#endif
#include <ctype.h>
#include "wx/datetime.h"
-#include "wx/timer.h" // for wxGetLocalTimeMillis()
+#include "wx/stopwatch.h" // for wxGetLocalTimeMillis()
const long wxDateTime::TIME_T_FACTOR = 1000l;
// (in seconds)
static int GetTimeZone()
{
+#ifdef WX_GMTOFF_IN_TM
// set to TRUE when the timezone is set
static bool s_timezoneSet = FALSE;
-#ifdef WX_GMTOFF_IN_TM
static long gmtoffset = LONG_MAX; // invalid timezone
-#endif
// ensure that the timezone variable is set by calling localtime
if ( !s_timezoneSet )
tm = localtime(&t);
s_timezoneSet = TRUE;
-#ifdef WX_GMTOFF_IN_TM
// 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
}
-#ifdef WX_GMTOFF_IN_TM
return (int)gmtoffset;
-#else
+#else // !WX_GMTOFF_IN_TM
return (int)WX_TIMEZONE;
-#endif
+#endif // WX_GMTOFF_IN_TM/!WX_GMTOFF_IN_TM
}
// return the integral part of the JDN for the midnight of the given date (to
#ifdef HAVE_STRPTIME
+// glibc2 doesn't define this in the headers unless _XOPEN_SOURCE is defined
+// which, unfortunately, wreaks havoc elsewhere
+#if defined(__GLIBC__) && (__GLIBC__ == 2)
+ extern "C" char *strptime(const char *, const char *, struct tm *);
+#endif
+
// Unicode-friendly strptime() wrapper
static const wxChar *
CallStrptime(const wxChar *input, const char *fmt, tm *tm)
Set(tm);
+ // finally check that the week day is consistent -- if we had it
+ if ( haveWDay && GetWeekDay() != wday )
+ {
+ wxLogDebug(_T("inconsistsnet week day in wxDateTime::ParseFormat()"));
+
+ return NULL;
+ }
+
return input;
}