c++11 标准时间和时间戳转换
//
// Created by monktan on 2020/10/16.
//
#include <cstdint>
#include <iostream>
#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_t timestamp)
{
int64_t milli = timestamp+ (int64_t)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;
}
int main(int argc, char** argv)
{
std::time_t cur_time = getTimeStamp();
gettm(cur_time);
return 0;
}