6 #ifndef _INC_cTimeFile_H
7 #define _INC_cTimeFile_H
39 static const int k_nDaysDiffTimeInt = ((369 * 365) + 89);
40 static const int k_nFreq = 10 * 1000000;
49 *
static_cast<FILETIME*
>(
this) = t;
59 SetSys(st, nTimeZoneOffset);
61 void SetSys(
const SYSTEMTIME& st,
TZ_TYPE nTimeZoneOffset)
63 ::SystemTimeToFileTime(&st,
this);
66 ::LocalFileTimeToFileTime(
this,
this);
70 bool GetSys(SYSTEMTIME& st,
TZ_TYPE nTimeZoneOffset)
const
72 FILETIME ftTmp = *
this;
75 ::FileTimeToLocalFileTime(
this, &ftTmp);
77 ::FileTimeToSystemTime(&ftTmp, &st);
82 #elif defined(__linux__)
84 static inline FILETIME_t CvtFileTime(
const struct timespec& tSpec)
88 nTmp += ((UINT64)tSpec.tv_sec);
90 nTmp += tSpec.tv_nsec / 100;
93 cTimeFile(
const struct timespec& tSpec)
96 InitTime(CvtFileTime(tSpec));
98 cTimeVal get_TimeVal()
const
100 FILETIME_t nTmpSec = this->get_Val() / k_nFreq;
102 (this->get_Val() - (nTmpSec*k_nFreq)) / 10);
110 return *
reinterpret_cast<FILETIME_t*
>(
static_cast<FILETIME*
>(
this));
116 return *
reinterpret_cast<const FILETIME_t*
>(
static_cast<const FILETIME*
>(
this));
124 return get_Val() / (2 * k_nFreq);
175 : m_nDiffUnits(nDiffUnits)
180 : m_nDiffUnits(iDays)
183 m_nDiffUnits += iHours;
185 m_nDiffUnits += iMinutes;
187 m_nDiffUnits += iSeconds;
#define GRAYCORE_LINK
Definition: GrayCore.h:47
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define UNITTEST_FRIEND(n)
Define this in the class body to be unit tested. Allow the unit test to access private/protected stuf...
Definition: cUnitTestDecl.h:17
Definition: cTimeFile.h:31
static const int k_nFreq
100-nanosecond intervals per second = 10th of a micro second.
Definition: cTimeFile.h:40
FILETIME_t get_FAT32() const noexcept
Definition: cTimeFile.h:119
FILETIME_t get_Val() const noexcept
Definition: cTimeFile.h:112
static cTimeFile __stdcall GetCurrentTime()
Definition: cTimeFile.h:142
void InitTime(FILETIME_t t=0) noexcept
Definition: cTimeFile.h:135
cTimeFile(const cTimeUnits &tu)
Definition: cTimeFile.h:51
FILETIME_t & ref_Val() noexcept
Definition: cTimeFile.h:106
bool isValid() const noexcept
Definition: cTimeFile.h:128
cTimeFile(const FILETIME &t) noexcept
Definition: cTimeFile.h:47
cTimeFile(FILETIME_t t=0) noexcept
Definition: cTimeFile.h:43
Definition: cTimeFile.h:167
INT64 GetTotalSeconds() const
Definition: cTimeFile.h:195
cTimeSpanFile(int iDays, int iHours, int iMinutes, int iSeconds)
Definition: cTimeFile.h:179
INT64 m_nDiffUnits
Definition: cTimeFile.h:172
INT64 get_Val() const
Definition: cTimeFile.h:191
cTimeSpanFile(INT64 nDiffUnits=0)
Definition: cTimeFile.h:174
Definition: cTimeUnits.h:146
static const TIMESECD_t k_nSecondsPerDay
seconds in a day = 86400
Definition: cTimeUnits.h:165
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
TZ_TYPE
Definition: cTimeUnits.h:29
@ TZ_LOCAL
just use local time zone. might include DST ??
Definition: cTimeUnits.h:44
@ TZ_UTC
UTC = never use DST or any TZ offset.
Definition: cTimeUnits.h:35
int COMPARE_t
result of compare. 0=same, 1=a>b, -1=a<b
Definition: cValT.h:17
int TIMESECD_t
signed delta seconds. like TIMESEC_t. redefined in TimeUnits.h.
Definition: cTimeSys.h:19
UINT64 FILETIME_t
replace FILETIME for 64 bit math. Absolute 64-bit 100-nanosecond since January 1, 1601 GMT
Definition: cTimeFile.h:28
char GChar_t
My version of TCHAR, _TCHAR.
Definition: StrConst.h:26
static COMPARE_t Compare(const TYPE &a, const TYPE &b) noexcept
Definition: cValT.h:46