c++11时间戳获取与转换

//获取毫秒级的时间戳

std::int64_t get_mill_time_stamp() {
    std::chrono::time_point tp = std::chrono::time_point_cast(std::chrono::system_clock::now());
    auto tmp = std::chrono::duration_cast(tp.time_since_epoch());
    return tmp.count();
}

std::int64_t get_time_stamp()
{
    std::chrono::time_point tp = std::chrono::time_point_cast(std::chrono::system_clock::now());
    auto tmp = std::chrono::duration_cast(tp.time_since_epoch());
    return tmp.count();
}

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(mTime);
    auto tt = std::chrono::system_clock::to_time_t(tp);
    std::tm* now = std::gmtime(&tt);
    return now;
}

std::wstring timewstr_from_time_stamp(int64_t timestamp, std::wstring format)
{
    int64_t milli = timestamp + (int64_t)8 * 60 * 60 * 1000;//此处转化为东八区北京时间,如果是其它时区需要按需求修改
    auto mTime = std::chrono::milliseconds(milli);
    auto tp = std::chrono::time_point(mTime);
    auto tt = std::chrono::system_clock::to_time_t(tp);
    std::tm* now = std::gmtime(&tt);
    std::wstring str;
    str.resize(64);
    try
    {
        std::wcsftime(&str[0], str.size(), format.c_str(), now);
    }catch (...)
    {
        return str;
    }
    
    return str;
}

std::string timestr_from_time_stamp(int64_t timestamp, std::string format)
{
    int64_t milli = timestamp + (int64_t)8 * 60 * 60 * 1000;//此处转化为东八区北京时间,如果是其它时区需要按需求修改
    auto mTime = std::chrono::milliseconds(milli);
    auto tp = std::chrono::time_point(mTime);
    auto tt = std::chrono::system_clock::to_time_t(tp);
    std::tm* now = std::gmtime(&tt);
    std::string str;
    str.resize(64);
    try{
        std::strftime(&str[0], str.size(), format.c_str(), now);
    }catch (...)
    {
        return str;
    }

    return str;
}

你可能感兴趣的:(c++11时间戳获取与转换)