从std :: string boost c ++获取小时和分钟

时间:2017-09-25 08:00:10

标签: c++ boost

我想在boost C ++中从std :: string日期时间只获得几小时和几分钟。 我有以下代码。

std::string d_time = std::string("2017-09-25 12:23:10");

我可以通过标记上面的字符串来获得它,但是有任何标准的boost函数只能提供来自" d_time" ?

先谢谢。

2 个答案:

答案 0 :(得分:2)

函数std::get_timestd::put_time可以帮助您。

此类函数与stream个对象一起使用,因此如果要处理字符串,可以使用stringstream

std::istringstream time_stream{d_time};  // Construct a stream from string
std::tm time;  // Time structure
time_stream >> std::get_time(&time, "%Y-%m-%d %H:%M:%S");  // Fill time struct

一旦你有了正确的初始化std::tm结构,你就可以提取所需的信息(小时和分钟)。

Here现场演示。

请注意,此类函数是标准 C ++ 11的一部分。

答案 1 :(得分:2)

如果你正在使用一个没有正确实现put_time / get_time操纵器的编译器/标准库版本,那么这里有一段使用Boost DateTime的代码

<强> Live On Wandbox

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

using boost::posix_time::time_from_string;

int main() {
    auto time = time_from_string("2017-09-25 12:23:10").time_of_day();;

    int hours = time.hours();
    int minutes = time.minutes();

    std::cout << "hours: " << hours << " minutes:" << minutes << "\n";
}