#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <chrono>
#include <windows.h>
#include <ctime>
std::string GetCurrentSystemTime()
{
auto timeNow = std::chrono::system_clock::to_time_t
(std::chrono::system_clock::now());
struct tm* pTimeNow = localtime(&timeNow);
char szDate[60] = { 0 };
sprintf(szDate, "%d-%02d-%02d %02d:%02d:%02d",
(int)pTimeNow->tm_year + 1900, (int)pTimeNow->tm_mon + 1, (int)pTimeNow->tm_mday,
(int)pTimeNow->tm_hour, (int)pTimeNow->tm_min, (int)pTimeNow->tm_sec);
return std::string(szDate);
}
double GetEscapeTime()
{
// 开始时间
auto timeStart = std::chrono::steady_clock::now();
Sleep(100);
// 结束时间
auto timeEnd = std::chrono::steady_clock::now();
std::chrono::duration<double, std::milli> timeEscape = timeEnd - timeStart;
return timeEscape.count();
}
void Convert2SystemClock(const std::string& strDate)
{
struct tm tmNow;
sscanf_s(strDate.c_str(), "%d-%02d-%02d %02d:%02d:%02d", &tmNow.tm_year, &tmNow.tm_mon, &tmNow.tm_mday, &tmNow.tm_hour
, &tmNow.tm_min, &tmNow.tm_sec);
tmNow.tm_year -= 1900;
--tmNow.tm_mon;
auto timeTmp = mktime(&tmNow);
auto timeStart = std::chrono::system_clock::from_time_t(timeTmp);
auto timeEnd = std::chrono::steady_clock::now();
std::chrono::duration<double, std::milli> timeEscape = timeEnd - timeStart;
std::cout << "After convert,Time-Escape:" << timeEscape.count() << std::endl;
}
int main()
{
std::cout << "Time-Escape:" << GetEscapeTime() << std::endl;
std::string strDate(GetCurrentSystemTime());
std::cout << "Curr-time:" << strDate.c_str() << std::endl;
Convert2SystemClock(strDate);
system("pause");
return 0;
}
C++11时间操作
最新推荐文章于 2024-05-20 19:29:52 发布