C++ 将UTC时差转换为字符串boost

C++ 将UTC时差转换为字符串boost,c++,boost,C++,Boost,我有两个UTC时间戳(自1970年1月1日起) 我想将它们之间的差异显示为字符串%H:%M:%S,例如13:34:12 目前我已经走到了这一步 time_facet *facet = new time_facet("%H:%M:%S"); cout.imbue(locale(cout.getloc(), facet)); ptime now = boost::date_time::not_a_date_time; now = boost::posix_time::microsec_clock:

我有两个UTC时间戳(自1970年1月1日起)

我想将它们之间的差异显示为字符串%H:%M:%S,例如13:34:12

目前我已经走到了这一步

time_facet *facet = new time_facet("%H:%M:%S");
cout.imbue(locale(cout.getloc(), facet));

ptime now = boost::date_time::not_a_date_time;
now = boost::posix_time::microsec_clock::universal_time();

ptime timerEnd = from_time_t(timestamp);
boost::posix_time::time_period tp(now, timerEnd);

//what now?

像这样的东西就行了,你不需要一段时间

#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>

namespace pt = boost::posix_time;

int main() {
    //format for ptime
    pt::time_facet *facet = new pt::time_facet("%H:%M:%S");
    //format for time_duration
    facet->time_duration_format("%H:%M");

    std::cout.imbue(std::locale(std::cout.getloc(), facet));

    time_t timestamp1 = 79387320;
    time_t timestamp2 = 79377320;
    pt::time_duration td = pt::from_time_t(timestamp1) - pt::from_time_t(timestamp2);

    std::cout << td << std::endl;       
    return 0;
}
#包括
#包括
名称空间pt=boost::posix_time;
int main(){
//ptime格式
pt::time_facet*facet=新的pt::time_facet(“%H:%M:%S”);
//时间和持续时间的格式
刻面->时间\持续时间\格式(“%H:%M”);
std::cout.imbue(std::locale(std::cout.getloc(),facet));
时间=79387320;
时间=79377320;
pt::time\u duration td=pt::from\u time\t(时间戳1)-pt::from\u time\t(时间戳2);

std::cout dam…答案是错误的…我应该检查pt::time\u facet*facet=new pt::time\u facet(“%H:%M”);还输出“02:46:40”对,构造函数只为ptime设置格式,而不是为time\u duration设置格式,我已经编辑了答案