X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..1a19e369fbce12ce4d8097fc08609a436748a6ed:/src/common/datetime.cpp?ds=inline diff --git a/src/common/datetime.cpp b/src/common/datetime.cpp index 3ef1e1e6f1..5ab055b3cc 100644 --- a/src/common/datetime.cpp +++ b/src/common/datetime.cpp @@ -13,7 +13,7 @@ // so long as the above copyright and this permission statement // are retained in all copies. // -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// /* @@ -103,7 +103,7 @@ #elif defined(__MWERKS__) long wxmw_timezone = 28800; #define WX_TIMEZONE wxmw_timezone - #elif defined(__DJGPP__) + #elif defined(__DJGPP__) || defined(__WINE__) #include #include static long wxGetTimeZone() @@ -258,7 +258,8 @@ wxDateTime::wxDateTime_t GetNumOfDaysInMonth(int year, wxDateTime::Month 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 @@ -266,20 +267,25 @@ static int GetTimeZone() #ifdef WX_GMTOFF_IN_TM static long gmtoffset = LONG_MAX; // invalid timezone #endif - + 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 - time_t t = 0; + time_t t = 0; struct tm *tm; tm = localtime(&t); s_timezoneSet = TRUE; + #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 } @@ -3231,7 +3237,7 @@ const wxChar *wxDateTime::ParseDate(const wxChar *date) // 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() ) {