시간

2014-11-04 7 views
2
auto timeSinceEpoch = boost::chrono::duration_cast<boost::chrono::microseconds>(boost::chrono::steady_clock::now().time_since_epoch()).count(); 

boost::posix_time::ptime now(boost::gregorian::date(1970, 1, 1), boost::posix_time::microsec(static_cast<std::int64_t>(timeSinceEpoch))); 

std::string str = boost::posix_time::to_iso_string(now); 

출력 : 그것은 잘못 19700114T232422.133653, 내가 무슨 일을하고 있는가?시간

답변

3

일부 시스템에서는 부팅 후 steady_clock의 기원이 나노초입니다.

당신은 더 유용 예상되는 다른 시계와 결과를 얻을 것이다 :

Live On Coliru

#include <boost/date_time/gregorian/gregorian.hpp> 
#include <boost/date_time/posix_time/posix_time.hpp> 
#include <boost/chrono.hpp> 
#include <string> 
#include <iostream> 

int main() 
{ 
    boost::posix_time::ptime const time_epoch(boost::gregorian::date(1970, 1, 1)); 

    auto ms = (boost::posix_time::microsec_clock::local_time() - time_epoch).total_microseconds(); 
    std::cout << "microseconds: " << ms << "\n"; 

    boost::posix_time::ptime now = time_epoch + boost::posix_time::microseconds(ms); 
    std::cout << boost::posix_time::to_iso_string(now); 
} 

인쇄를

microseconds: 1415115992000000 
20141104T154632 
+0

나는 그것이 정확하지 않습니다하지만 난 얻을 필요 마이크로 초 정밀도 – Guillaume07