// this function is a wrapper around strftime(3) // allows to exclude the usage of wxDateTime static wxString TimeStamp(const wxString& format, time_t t) { wxChar buf[4096]; struct tm tm; if ( !wxStrftime(buf, WXSIZEOF(buf), format, wxLocaltime_r(&t, &tm)) ) { // buffer is too small? wxFAIL_MSG(wxT("strftime() failed")); } return wxString(buf); }
// this function is a wrapper around strftime(3) // allows to exclude the usage of wxDateTime static wxString TimeStamp(const wxString& format, time_t t) { #if wxUSE_DATETIME wxChar buf[4096]; struct tm tm; if ( !wxStrftime(buf, WXSIZEOF(buf), format, wxLocaltime_r(&t, &tm)) ) { // buffer is too small? wxFAIL_MSG(_T("strftime() failed")); } return wxString(buf); #else // !wxUSE_DATETIME return wxEmptyString; #endif // wxUSE_DATETIME/!wxUSE_DATETIME }
void wxLog::TimeStamp(wxString *str) { #if wxUSE_DATETIME if ( ms_timestamp ) { wxChar buf[256]; time_t timeNow; (void)time(&timeNow); struct tm tm; wxStrftime(buf, WXSIZEOF(buf), ms_timestamp, wxLocaltime_r(&timeNow, &tm)); str->Empty(); *str << buf << wxT(": "); } #endif // wxUSE_DATETIME }
// returns the time zone in the C sense, i.e. the difference UTC - local // (in seconds) int wxGetTimeZone() { #ifdef WX_GMTOFF_IN_TM // set to true when the timezone is set static bool s_timezoneSet = false; static long gmtoffset = LONG_MAX; // invalid timezone // ensure that the timezone variable is set by calling wxLocaltime_r if ( !s_timezoneSet ) { // just call wxLocaltime_r() instead of figuring out whether this // system supports tzset(), _tzset() or something else time_t t = time(NULL); struct tm tm; wxLocaltime_r(&t, &tm); s_timezoneSet = true; // 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; // this function is supposed to return the same value whether DST is // enabled or not, so we need to use an additional offset if DST is on // as tm_gmtoff already does include it if ( tm.tm_isdst ) gmtoffset += 3600; } return (int)gmtoffset; #elif defined(__DJGPP__) || defined(__WINE__) struct timeb tb; ftime(&tb); return tb.timezone*60; #elif defined(__VISUALC__) // We must initialize the time zone information before using it (this will // be done only once internally). _tzset(); // Starting with VC++ 8 timezone variable is deprecated and is not even // available in some standard library version so use the new function for // accessing it instead. #if wxCHECK_VISUALC_VERSION(8) long t; _get_timezone(&t); return t; #else // VC++ < 8 return timezone; #endif #else // Use some kind of time zone variable. // In any case we must initialize the time zone before using it. tzset(); #if defined(WX_TIMEZONE) // If WX_TIMEZONE was defined by configure, use it. return WX_TIMEZONE; #elif defined(__BORLANDC__) || defined(__MINGW32__) return _timezone; #else // unknown platform -- assume it has timezone return timezone; #endif // different time zone variables #endif // different ways to determine time zone }