В этой статье блога мы рассмотрим различные методы вычисления отметки времени с помощью функции Win32 GetSystemTimeAsFileTime(). Мы предоставим примеры кода для каждого метода, чтобы помочь вам реализовать их в ваших проектах. К концу этой статьи вы будете иметь четкое представление о том, как получать временные метки с помощью этой функции Win32.
Метод 1: использование структуры FILETIME и функций преобразования
#include <Windows.h>
#include <iostream>
#include <iomanip>
#include <sstream>
std::string GetTimestampFromWin32FileTime()
{
FILETIME fileTime;
GetSystemTimeAsFileTime(&fileTime);
ULARGE_INTEGER uli;
uli.LowPart = fileTime.dwLowDateTime;
uli.HighPart = fileTime.dwHighDateTime;
ULONGLONG timestamp = uli.QuadPart / 10000ULL - 11644473600000ULL;
std::stringstream ss;
ss << std::setw(20) << std::setfill('0') << timestamp;
return ss.str();
}
int main()
{
std::string timestamp = GetTimestampFromWin32FileTime();
std::cout << "Timestamp: " << timestamp << std::endl;
return 0;
}
Метод 2. Использование структуры SYSTEMTIME и функций преобразования
#include <Windows.h>
#include <iostream>
#include <iomanip>
#include <sstream>
std::string GetTimestampFromWin32SystemTime()
{
SYSTEMTIME systemTime;
GetSystemTime(&systemTime);
FILETIME fileTime;
SystemTimeToFileTime(&systemTime, &fileTime);
ULARGE_INTEGER uli;
uli.LowPart = fileTime.dwLowDateTime;
uli.HighPart = fileTime.dwHighDateTime;
ULONGLONG timestamp = uli.QuadPart / 10000ULL - 11644473600000ULL;
std::stringstream ss;
ss << std::setw(20) << std::setfill('0') << timestamp;
return ss.str();
}
int main()
{
std::string timestamp = GetTimestampFromWin32SystemTime();
std::cout << "Timestamp: " << timestamp << std::endl;
return 0;
}
Метод 3. Использование функций времени и функций преобразования
#include <Windows.h>
#include <iostream>
#include <iomanip>
#include <sstream>
std::string GetTimestampFromWin32Time()
{
time_t currentTime = time(NULL);
FILETIME fileTime;
SystemTimeToFileTime((SYSTEMTIME*)¤tTime, &fileTime);
ULARGE_INTEGER uli;
uli.LowPart = fileTime.dwLowDateTime;
uli.HighPart = fileTime.dwHighDateTime;
ULONGLONG timestamp = uli.QuadPart / 10000ULL - 11644473600000ULL;
std::stringstream ss;
ss << std::setw(20) << std::setfill('0') << timestamp;
return ss.str();
}
int main()
{
std::string timestamp = GetTimestampFromWin32Time();
std::cout << "Timestamp: " << timestamp << std::endl;
return 0;
}
В этой статье мы рассмотрели три метода вычисления отметки времени с помощью функции Win32 GetSystemTimeAsFileTime(). Эти методы включают использование структуры FILETIME, структуры SYSTEMTIME и функций времени. Каждый метод предоставляет пример кода, демонстрирующий, как получить метку времени из функции Win32. Реализуя эти методы, вы можете легко получать временные метки в своих приложениях и проектах.