3

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

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

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

YYYY-MM-DDTHH:MM:SSSZ

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

4

1 回答 1

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;
}
于 2013-05-31T08:04:03.267 回答