cpp-DateTime

Win32 获取时间

SYSTEMTIME time;
GetLocalTime(&time);

win32 格式化时间

char msg[9];
sprintf(msg, "%04d%02d%02d", st.wYear, st.wMonth, st.wDay);

timestamp

need cpp 11 support

#include <chrono>

std::time_t getTimeStamp()
{
std::chrono::time_point<std::chrono::system_clock,std::chrono::milliseconds> tp = std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::system_clock::now());
auto tmp=std::chrono::duration_cast<std::chrono::milliseconds>(tp.time_since_epoch());
std::time_t timestamp = tmp.count();
return timestamp;
}

时间戳转日期

std::tm* gettm(int64 timestamp)
{
int64 milli = timestamp+ (int64)8*60*60*1000;//此处转化为东八区北京时间,如果是其它时区需要按需求修改
auto mTime = std::chrono::milliseconds(milli);
auto tp=std::chrono::time_point<std::chrono::system_clock,std::chrono::milliseconds>(mTime);
auto tt = std::chrono::system_clock::to_time_t(tp);
std::tm* now = std::gmtime(&tt);
printf("%4d年%02d月%02d日 %02d:%02d:%02d\n",now->tm_year+1900,now->tm_mon+1,now->tm_mday,now->tm_hour,now->tm_min,now->tm_sec);
return now;
}

函数计时

auto start = chrono::system_clock::now();

xxxfunc();

auto end = chrono::system_clock::now();
auto duration = chrono::duration_cast<chrono::microseconds>(end - start);
wstring str = utils::format(L"花费了 %f 秒", double(duration.count()) * chrono::microseconds::period::num / chrono::microseconds::period::den);

定时器

linux

POSIX定时器支持ns级别

int timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspect *ovalue);
int timer_gettime(timer_t timerid,struct itimerspec *value);
int timer_getoverrun(timer_t timerid);
int timer_delete (timer_t timerid);