gpt4 book ai didi

c++ - 从纪元到 dateformat C++ 的毫秒数

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:46 25 4
gpt4 key购买 nike

我在 long long int 中有特定时间自纪元 (windows/gregorian) 以来的毫秒数,我想将其转换为人类时间,例如 yy-mm-dd-hh-mm-ss-milli。 (我的平台:Windows 7、64 位)

不幸的是,到目前为止我找到的所有解决方案都无法处理毫秒(long long int)部分。

最佳答案

C++11 API 不完整,所以我不得不发明一辆自行车:

    static long getTs() {
struct timeval tp;
gettimeofday(&tp, NULL);
long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;
return ms;
}

static string format(long ts,string fmt,int cutBack=0){
time_t tt = ts/1000;
int microsec = ts%1000;
struct std::tm * ptm = std::localtime(&tt);
string fmtms=std::regex_replace(fmt, std::regex("%ms"), to_string(microsec));
std::stringstream ss;
ss << std::put_time(ptm, fmtms.c_str());
string ret = ss.str();
return ret.substr(0,ret.size()-cutBack);
}

std::cout << CommonUtils::format(CommonUtils::getTs(), "%Y-%m-%dT%H:%M:%S.%ms%Z")<<endl;

给我:2020-01-24T11:55:14.375+07,cutBack 参数是可选的,它指定要从输出字符串中删除多少个字符。当像 +0700 这样的时区格式太长而您只需要 +07 时,它很有用。

关于c++ - 从纪元到 dateformat C++ 的毫秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22455357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com