📄 systemtimeutils.cpp
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include "SystemTimeUtils.h"
ULONGLONG SystemTimeToUll(const SYSTEMTIME *pst)
{
PREFAST_ASSERT(pst);
FILETIME ft = {0};
SystemTimeToFileTime(pst, &ft);
return ((((ULONGLONG)ft.dwHighDateTime) << (sizeof(DWORD)*8)) | ft.dwLowDateTime);
}
BOOL operator==(const SYSTEMTIME &stA, const SYSTEMTIME &stB)
{
return SystemTimeToUll(&stA) == SystemTimeToUll(&stB);
}
BOOL operator!=(const SYSTEMTIME &stA, const SYSTEMTIME &stB)
{
return !(stA == stB);
}
BOOL operator<(const SYSTEMTIME &stA, const SYSTEMTIME &stB)
{
return (SystemTimeToUll(&stA) < SystemTimeToUll(&stB));
}
BOOL operator>(const SYSTEMTIME &stA, const SYSTEMTIME &stB)
{
return (SystemTimeToUll(&stB) < SystemTimeToUll(&stA));
}
const ULONGLONG HUNDRED_NS_PER_HOUR =
(ULONGLONG)60 *
(ULONGLONG)60 *
(ULONGLONG)1000 *
(ULONGLONG)10000;
VOID IncrementTime(SYSTEMTIME *pstOut, const SYSTEMTIME *pstToInc, signed int nHours)
{
PREFAST_ASSERT(pstToInc && pstOut);
ULONGLONG ullOut = SystemTimeToUll(pstToInc);
ullOut += (signed long long)(nHours * HUNDRED_NS_PER_HOUR);
FILETIME ft = {0};
ft.dwHighDateTime = (DWORD)(ullOut >> (sizeof(DWORD)*8));
ft.dwLowDateTime = (DWORD)(ullOut);
FileTimeToSystemTime(&ft, pstOut);
}
DWORD HourDifference(const SYSTEMTIME *pstEnd, const SYSTEMTIME *pstStart)
{
PREFAST_ASSERT(pstEnd && pstStart);
ASSERT(*pstEnd > *pstStart);
ULONGLONG ullDiff = SystemTimeToUll(pstEnd) - SystemTimeToUll(pstStart);
ullDiff /= HUNDRED_NS_PER_HOUR;
return (DWORD)ullDiff;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -