2011-11-27 14:50:19 -05:00
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: wx/time.h
|
|
|
|
// Purpose: Miscellaneous time-related functions.
|
|
|
|
// Author: Vadim Zeitlin
|
|
|
|
// Created: 2011-11-26
|
|
|
|
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
|
|
|
|
// Licence: wxWindows licence
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef _WX_TIME_H_
|
|
|
|
#define _WX_TIME_H_
|
|
|
|
|
2011-11-27 14:50:27 -05:00
|
|
|
#include "wx/longlong.h"
|
|
|
|
|
2011-11-27 14:50:19 -05:00
|
|
|
// Returns the difference between UTC and local time in seconds.
|
|
|
|
WXDLLIMPEXP_BASE int wxGetTimeZone();
|
|
|
|
|
2011-11-27 14:50:27 -05:00
|
|
|
// Get number of seconds since local time 00:00:00 Jan 1st 1970.
|
|
|
|
extern long WXDLLIMPEXP_BASE wxGetLocalTime();
|
|
|
|
|
|
|
|
// Get number of seconds since GMT 00:00:00, Jan 1st 1970.
|
|
|
|
extern long WXDLLIMPEXP_BASE wxGetUTCTime();
|
|
|
|
|
|
|
|
#if wxUSE_LONGLONG
|
|
|
|
typedef wxLongLong wxMilliClock_t;
|
|
|
|
inline long wxMilliClockToLong(wxLongLong ll) { return ll.ToLong(); }
|
|
|
|
#else
|
|
|
|
typedef double wxMilliClock_t;
|
|
|
|
inline long wxMilliClockToLong(double d) { return wx_truncate_cast(long, d); }
|
|
|
|
#endif // wxUSE_LONGLONG
|
|
|
|
|
|
|
|
// Get number of milliseconds since local time 00:00:00 Jan 1st 1970
|
|
|
|
extern wxMilliClock_t WXDLLIMPEXP_BASE wxGetLocalTimeMillis();
|
|
|
|
|
|
|
|
#if wxUSE_LONGLONG
|
|
|
|
|
|
|
|
// Get the number of milliseconds or microseconds since the Epoch.
|
|
|
|
wxLongLong WXDLLIMPEXP_BASE wxGetUTCTimeMillis();
|
|
|
|
wxLongLong WXDLLIMPEXP_BASE wxGetUTCTimeUSec();
|
|
|
|
|
|
|
|
#endif // wxUSE_LONGLONG
|
|
|
|
|
|
|
|
#define wxGetCurrentTime() wxGetLocalTime()
|
|
|
|
|
|
|
|
// on some really old systems gettimeofday() doesn't have the second argument,
|
|
|
|
// define wxGetTimeOfDay() to hide this difference
|
|
|
|
#ifdef HAVE_GETTIMEOFDAY
|
|
|
|
#ifdef WX_GETTIMEOFDAY_NO_TZ
|
|
|
|
#define wxGetTimeOfDay(tv) gettimeofday(tv)
|
|
|
|
#else
|
|
|
|
#define wxGetTimeOfDay(tv) gettimeofday((tv), NULL)
|
|
|
|
#endif
|
|
|
|
#endif // HAVE_GETTIMEOFDAY
|
|
|
|
|
2011-11-27 15:28:43 -05:00
|
|
|
/* Two wrapper functions for thread safety */
|
|
|
|
#ifdef HAVE_LOCALTIME_R
|
|
|
|
#define wxLocaltime_r localtime_r
|
|
|
|
#else
|
|
|
|
WXDLLIMPEXP_BASE struct tm *wxLocaltime_r(const time_t*, struct tm*);
|
2014-05-16 09:01:06 -04:00
|
|
|
#if wxUSE_THREADS && !defined(__WINDOWS__)
|
2011-11-27 15:28:43 -05:00
|
|
|
// On Windows, localtime _is_ threadsafe!
|
|
|
|
#warning using pseudo thread-safe wrapper for localtime to emulate localtime_r
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef HAVE_GMTIME_R
|
|
|
|
#define wxGmtime_r gmtime_r
|
|
|
|
#else
|
|
|
|
WXDLLIMPEXP_BASE struct tm *wxGmtime_r(const time_t*, struct tm*);
|
2014-05-16 09:01:06 -04:00
|
|
|
#if wxUSE_THREADS && !defined(__WINDOWS__)
|
2011-11-27 15:28:43 -05:00
|
|
|
// On Windows, gmtime _is_ threadsafe!
|
|
|
|
#warning using pseudo thread-safe wrapper for gmtime to emulate gmtime_r
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
2011-11-27 14:50:19 -05:00
|
|
|
#endif // _WX_TIME_H_
|