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

标签 c++ datetime milliseconds gregorian-calendar valueconverter

我在 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/

相关文章:

python - 在 pandas df 中添加缺失的日期,但日期范围有(有效)重复项

c++ - 自动更改 C++11 中的含义;请删除它这是什么意思?

java - TimeUnit 类坏了吗?

java - C++ 和 Java 中 CRC32 的不同结果

c++ - 继承问题 : derived class not inheriting base class

c# - 如何以特定格式绑定(bind)日期时间列中的网格

c++11 - std::chrono::milliseconds .count() 以微秒为单位返回?

c++ - 我可以在指针类型的声明中省略 const 限定符吗?

c++ - Visual Studio 2012 - 缺少所需文件 "tracker.exe"

algorithm - 在另一个时间段内迭代离散时间段