如何从使用QDateTime ISODate格式创建的字符串创建boost :: posix_time :: ptime对象?

时间:2013-05-30 22:46:21

标签: c++ qt boost

我正在使用我的新应用迁移旧的应用数据库。旧应用程序使用QT,新应用程序不使用。

我想将存储在数据库中的日期转换为boost :: posix_time :: ptime对象。通过将QDateTime对象转换为具有ISODate格式的字符串,将日期存储在数据库中。

因此,源字符串具有以下格式:

YYYY-MM-DDTHH:MM:SSSZ

是否有一个简单的例程可用于从QDateTime字符串生成ptimes?我尝试了posix_time :: from_iso_string,但是由于日期中存在' - '分隔符而失败了(可能':'分隔符也是一个问题)。

1 个答案:

答案 0 :(得分:3)

没有时区(Z格式标志),这很容易。请参阅以下代码。

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

int main(int argc, char *argv[]) {
    const boost::posix_time::ptime time_with_ms = boost::date_time::parse_delimited_time<boost::posix_time::ptime>("2013-05-31T09:00:00.123", 'T');
    const boost::posix_time::ptime time_without_ms = boost::date_time::parse_delimited_time<boost::posix_time::ptime>("2013-05-31T09:00:00", 'T');
    std::cout << boost::posix_time::to_simple_string(time_with_ms) << std::endl;
    std::cout << boost::posix_time::to_simple_string(time_without_ms) << std::endl;
    return 0;
}