File Index Symbol Index

//
// time.h
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// The C Standard Library <time.h> header.
//
#pragma once
#ifndef _INC_TIME // include guard for 3rd party interop
#define _INC_TIME
#include <corecrt.h> #include <corecrt_wtime.h>
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Types
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
typedef
long
clock_t
;
struct
_timespec32
{
__time32_t
tv_sec
;
long
tv_nsec
; };
struct
_timespec64
{
__time64_t
tv_sec
;
long
tv_nsec
; };
#ifndef _CRT_NO_TIME_T
struct
timespec
{
time_t
tv_sec
;
// Seconds - >= 0
long
tv_nsec
;
// Nanoseconds - [0, 999999999]
};
#endif
// The number of clock ticks per second
#define CLOCKS_PER_SEC ((clock_t)1000)
#define TIME_UTC 1
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Time Zone and Daylight Savings Time Data and Accessors
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Nonzero if Daylight Savings Time is used
#define _daylight (*__daylight())
// Offset for Daylight Savings Time
#define _dstbias (*__dstbias())
// Difference in seconds between GMT and local time
#define _timezone (*__timezone())
// Standard and Daylight Savings Time time zone names
#define _tzname (__tzname())
_Success_(_Daylight != 0)
);
_Success_(_DaylightSavingsBias != 0)
);
_Success_(_TimeZone != 0)
);
_Success_(return == 0)
);
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// AppCRT Time Functions
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
_Success_(return != 0)
_Ret_writes_z_(26)
);
#if __STDC_WANT_SECURE_LIB__
_Success_(return == 0)
_Check_return_wat_
);
#endif
_Check_return_
_Ret_z_
_Success_(return != 0)
);
_Check_return_wat_
);
_Ret_z_
_Success_(return != 0)
);
_Check_return_wat_
);
_Check_return_
);
_Check_return_
);
_Success_(return != 0)
);
_Check_return_wat_
);
_Success_(return != 0)
);
_Check_return_wat_
);
_Success_(return != 0)
);
_Check_return_wat_
);
_Success_(return != 0)
);
_Check_return_wat_
);
_Check_return_
);
_Check_return_
);
_Check_return_opt_
);
_Check_return_opt_
);
_Success_(return > 0)
_Check_return_wat_
);
_Success_(return > 0)
_Check_return_wat_
);
_Check_return_wat_
);
_Check_return_wat_
); ); );
_Success_(return != 0)
_Check_return_
);
_Success_(return != 0)
_Check_return_
);
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// DesktopCRT Time Functions
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
// The Win32 API GetLocalTime and SetLocalTime should be used instead.
); );
#endif
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Inline Function Definitions
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#if !defined RC_INVOKED && !defined __midl && !defined _INC_TIME_INL && !defined _CRT_NO_TIME_T
#ifdef _USE_32BIT_TIME_T
_Check_return_ _CRT_INSECURE_DEPRECATE(ctime_s)
static __inline char* __CRTDECL ctime(
_In_ time_t const* const _Time
)
{
#pragma warning(push)
#pragma warning(disable: 4996)
return _ctime32(_Time);
#pragma warning(pop)
}
_Check_return_
static __inline double __CRTDECL difftime(
_In_ time_t const _Time1,
_In_ time_t const _Time2
)
{
return _difftime32(_Time1, _Time2);
}
_Check_return_ _CRT_INSECURE_DEPRECATE(gmtime_s)
static __inline struct tm* __CRTDECL gmtime(
_In_ time_t const* const _Time
)
{
#pragma warning(push)
#pragma warning(disable: 4996)
return _gmtime32(_Time);
#pragma warning(pop)
}
_Check_return_ _CRT_INSECURE_DEPRECATE(localtime_s)
static __inline struct tm* __CRTDECL localtime(
_In_ time_t const* const _Time
)
{
#pragma warning(push)
#pragma warning(disable: 4996)
return _localtime32(_Time);
#pragma warning(pop)
}
_Check_return_
static __inline time_t __CRTDECL _mkgmtime(
_Inout_ struct tm* const _Tm
)
{
return _mkgmtime32(_Tm);
}
_Check_return_opt_
static __inline time_t __CRTDECL mktime(
_Inout_ struct tm* const _Tm
)
{
return _mktime32(_Tm);
}
static __inline time_t __CRTDECL time(
_Out_opt_ time_t* const _Time
)
{
return _time32(_Time);
}
_Check_return_
static __inline int __CRTDECL timespec_get(
_Out_ struct timespec* const _Ts,
_In_ int const _Base
)
{
return _timespec32_get((struct _timespec32*)_Ts, _Base);
}
#if __STDC_WANT_SECURE_LIB__
_Check_return_wat_
static __inline errno_t __CRTDECL ctime_s(
_Out_writes_(_SizeInBytes) _Post_readable_size_(26) char* const _Buffer,
_In_range_(>=,26) size_t const _SizeInBytes,
_In_ time_t const* const _Time
)
{
return _ctime32_s(_Buffer, _SizeInBytes, _Time);
}
_Check_return_wat_
static __inline errno_t __CRTDECL gmtime_s(
_Out_ struct tm* const _Tm,
_In_ time_t const* const _Time
)
{
return _gmtime32_s(_Tm, _Time);
}
_Check_return_wat_
static __inline errno_t __CRTDECL localtime_s(
_Out_ struct tm* const _Tm,
_In_ time_t const* const _Time
)
{
return _localtime32_s(_Tm, _Time);
}
#endif
#else // ^^^ _USE_32BIT_TIME_T ^^^ // vvv !_USE_32BIT_TIME_T vvv
) {
return
_ctime64
(
_Time
); }
_Check_return_
) {
return
_difftime64
(
_Time1
,
_Time2
); } {
return
_gmtime64
(
_Time
); } ) {
return
_localtime64
(
_Time
); }
_Check_return_
) {
return
_mkgmtime64
(
_Tm
); }
_Check_return_opt_
) {
return
_mktime64
(
_Tm
); } ) {
return
_time64
(
_Time
); }
_Check_return_
) {
return
_timespec64_get
((
struct
_timespec64
*)
_Ts
,
_Base
); }
#if __STDC_WANT_SECURE_LIB__
_Check_return_wat_
) {
return
_ctime64_s
(
_Buffer
,
_SizeInBytes
,
_Time
); }
_Check_return_wat_
) {
return
_gmtime64_s
(
_Tm
,
_Time
); }
_Check_return_wat_
) {
return
_localtime64_s
(
_Tm
,
_Time
); }
#endif
#endif // !_USE_32BIT_TIME_T
#endif
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//
// Non-ANSI Names for Compatibility
//
//-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#if _CRT_INTERNAL_NONSTDC_NAMES
#define CLK_TCK CLOCKS_PER_SEC
#ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP
#endif // _CRT_INTERNAL_NONSTDC_NAMES