1 /////////////////////////////////////////////////////////////////////////////// 2 // Name: wx/time.h 3 // Purpose: Miscellaneous time-related functions. 4 // Author: Vadim Zeitlin 5 // Created: 2011-11-26 6 // Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org> 7 // Licence: wxWindows licence 8 /////////////////////////////////////////////////////////////////////////////// 9 10 #ifndef _WX_TIME_H_ 11 #define _WX_TIME_H_ 12 13 #include "wx/longlong.h" 14 15 // Returns the difference between UTC and local time in seconds. 16 WXDLLIMPEXP_BASE int wxGetTimeZone(); 17 18 // Get number of seconds since local time 00:00:00 Jan 1st 1970. 19 extern long WXDLLIMPEXP_BASE wxGetLocalTime(); 20 21 // Get number of seconds since GMT 00:00:00, Jan 1st 1970. 22 extern long WXDLLIMPEXP_BASE wxGetUTCTime(); 23 24 #if wxUSE_LONGLONG 25 typedef wxLongLong wxMilliClock_t; wxMilliClockToLong(wxLongLong ll)26 inline long wxMilliClockToLong(wxLongLong ll) { return ll.ToLong(); } 27 #else 28 typedef double wxMilliClock_t; wxMilliClockToLong(double d)29 inline long wxMilliClockToLong(double d) { return wx_truncate_cast(long, d); } 30 #endif // wxUSE_LONGLONG 31 32 // Get number of milliseconds since local time 00:00:00 Jan 1st 1970 33 extern wxMilliClock_t WXDLLIMPEXP_BASE wxGetLocalTimeMillis(); 34 35 #if wxUSE_LONGLONG 36 37 // Get the number of milliseconds or microseconds since the Epoch. 38 wxLongLong WXDLLIMPEXP_BASE wxGetUTCTimeMillis(); 39 wxLongLong WXDLLIMPEXP_BASE wxGetUTCTimeUSec(); 40 41 #endif // wxUSE_LONGLONG 42 43 #define wxGetCurrentTime() wxGetLocalTime() 44 45 // on some really old systems gettimeofday() doesn't have the second argument, 46 // define wxGetTimeOfDay() to hide this difference 47 #ifdef HAVE_GETTIMEOFDAY 48 #ifdef WX_GETTIMEOFDAY_NO_TZ 49 #define wxGetTimeOfDay(tv) gettimeofday(tv) 50 #else 51 #define wxGetTimeOfDay(tv) gettimeofday((tv), NULL) 52 #endif 53 #endif // HAVE_GETTIMEOFDAY 54 55 /* Two wrapper functions for thread safety */ 56 #ifdef HAVE_LOCALTIME_R 57 #define wxLocaltime_r localtime_r 58 #else 59 WXDLLIMPEXP_BASE struct tm *wxLocaltime_r(const time_t*, struct tm*); 60 #if wxUSE_THREADS && !defined(__WINDOWS__) && !defined(__WATCOMC__) 61 // On Windows, localtime _is_ threadsafe! 62 #warning using pseudo thread-safe wrapper for localtime to emulate localtime_r 63 #endif 64 #endif 65 66 #ifdef HAVE_GMTIME_R 67 #define wxGmtime_r gmtime_r 68 #else 69 WXDLLIMPEXP_BASE struct tm *wxGmtime_r(const time_t*, struct tm*); 70 #if wxUSE_THREADS && !defined(__WINDOWS__) && !defined(__WATCOMC__) 71 // On Windows, gmtime _is_ threadsafe! 72 #warning using pseudo thread-safe wrapper for gmtime to emulate gmtime_r 73 #endif 74 #endif 75 76 #endif // _WX_TIME_H_ 77