使用C ++ Boost库如何返回格林尼治标准时间1901年1月1日00:00:00以来的秒数?

时间:2018-07-30 12:48:30

标签: c++11 unix boost

seconds()方法应从main方法调用,并应打印00:00:00 January 1, 1901 GMT的格式,并应返回(计算)用户输入时间之前经过的秒数,我是新用户C ++方面,我做了很多尝试,但未能实现

我尝试的代码:

// here i tried to start the day from the mentioned date and time
boost::posix_time::ptime timeObj = boost::posix_time::time_from_string("1901/01/01 00:00:00");

 // Get current system time
boost::posix_time::ptime timeLocal = boost::posix_time::second_clock::local_time();

boost::posix_time::time_duration durObj = timeLocal.time_of_day();
std::cout << "Seconds : = " << timeLocal.time_of_day().seconds() << std::endl;

在此之后

  1. 00:00:00 January 1, 1901 GMT到用户输入时间,我需要相差几秒钟。
  2. 它前面的应该返回00:00:00 January 1, 1901 GMT的格式。

之所以这样做,是因为我正在为自己的产品自定义此Boost库。

1 个答案:

答案 0 :(得分:0)

请勿使用time_of_day(因为它提供了一天中的时间)。

不用秒,而是用total_seconds。

使用ptime算法获得差值。其余的很好。

Live On Coliru

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

size_t foo() {
    boost::posix_time::ptime epoch { { 1901, 1, 1 } };

    auto diff = boost::posix_time::second_clock::local_time() - epoch;
    return diff.total_seconds();
}

int main() {
    std::cout << foo() << "\n";
}

打印的:

3710416481

应该让您确定我的平均打字速度和本地时区:)