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

How do I create boost::posix_time::ptime objects from strings created using QDateTime ISODate format?

本文关键字:创建 字符串 对象 QDateTime 格式 ISODate ptime 何创建 posix boost time      更新时间:2023-10-16

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

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

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

YYYY-MM-DDTHH:MM:SSSZ

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

没有时区(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;
}