我需要帮助找出两个给定时间之间的差异作为字符串.我正在使用boost :: posix_time并从boost :: gregorian :: date构造ptime对象,但是当我试图计算time_duration时我得到0.
这是程序
#include <boost/date_time/gregorian/gregorian.hpp>
#include "boost/date_time/posix_time/posix_time.hpp"
int main(int argc, char** argv) {
std::string date_1 = "2014-08-15 10:12:10";
std::string date_2 = "2014-08-15 16:40:02";
boost::posix_time::ptime t1(boost::gregorian::from_simple_string(date_1));
boost::posix_time::ptime t2(boost::gregorian::from_simple_string(date_2));
boost::posix_time::time_duration td = t2 - t1;
std::cout << boost::posix_time::to_simple_string(td) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
打印出来 00:00:00
如何解决这个问题,并获得实际的持续时间.
正如Martin在评论中提到的那样,你使用了错误的(仅限日期)构造函数.
这是一个修复版本,以及一些测试输出:
#include <boost/date_time/gregorian/gregorian.hpp>
#include "boost/date_time/posix_time/posix_time.hpp"
int main(int argc, char** argv) {
std::string date_1 = "2014-08-15 10:12:10";
std::string date_2 = "2014-08-15 16:40:02";
boost::posix_time::ptime t1(boost::posix_time::time_from_string(date_1));
boost::posix_time::ptime t2(boost::posix_time::time_from_string(date_2));
std::cout << "t1: " << t1 << std::endl;
std::cout << "t2: " << t2 << std::endl;
boost::posix_time::time_duration td = t2 - t1;
std::cout << boost::posix_time::to_simple_string(td) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这会产生所需的结果:
edd@max:/tmp$ g++ -o bdt bdt.cpp -lboost_date_time
edd@max:/tmp$ ./bdt
t1: 2014-Aug-15 10:12:10
t2: 2014-Aug-15 16:40:02
06:27:52
edd@max:/tmp$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4457 次 |
| 最近记录: |