]> git.saurik.com Git - wxWidgets.git/blame - include/wx/time.h
Don't define __STRICT_ANSI__, we should build both with and without it.
[wxWidgets.git] / include / wx / time.h
CommitLineData
59068d79
VZ
1///////////////////////////////////////////////////////////////////////////////
2// Name: wx/time.h
3// Purpose: Miscellaneous time-related functions.
4// Author: Vadim Zeitlin
5// Created: 2011-11-26
59068d79
VZ
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
173a5ddc
VZ
13#include "wx/longlong.h"
14
59068d79
VZ
15// Returns the difference between UTC and local time in seconds.
16WXDLLIMPEXP_BASE int wxGetTimeZone();
17
173a5ddc
VZ
18// Get number of seconds since local time 00:00:00 Jan 1st 1970.
19extern long WXDLLIMPEXP_BASE wxGetLocalTime();
20
21// Get number of seconds since GMT 00:00:00, Jan 1st 1970.
22extern long WXDLLIMPEXP_BASE wxGetUTCTime();
23
24#if wxUSE_LONGLONG
25 typedef wxLongLong wxMilliClock_t;
26 inline long wxMilliClockToLong(wxLongLong ll) { return ll.ToLong(); }
27#else
28 typedef double wxMilliClock_t;
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
33extern wxMilliClock_t WXDLLIMPEXP_BASE wxGetLocalTimeMillis();
34
35#if wxUSE_LONGLONG
36
37// Get the number of milliseconds or microseconds since the Epoch.
38wxLongLong WXDLLIMPEXP_BASE wxGetUTCTimeMillis();
39wxLongLong 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
fb7ce3e8
VZ
55/* Two wrapper functions for thread safety */
56#ifdef HAVE_LOCALTIME_R
57#define wxLocaltime_r localtime_r
58#else
59WXDLLIMPEXP_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
69WXDLLIMPEXP_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
59068d79 76#endif // _WX_TIME_H_