3

新しいアプリを使用して古いアプリ データベースを移行しています。古いアプリは QT を使用していますが、新しいアプリは使用していません。

データベースに格納されている日付を boost::posix_time::ptime オブジェクトに変換したいと考えています。日付は、QDateTime オブジェクトを ISODate 形式の文字列に変換することによってデータベースに格納されました。

したがって、ソース文字列は次の形式になります。

YYYY-MM-DDTHH:MM:SSSZ

QDateTime 文字列から ptimes を生成するための簡単なルーチンはありますか? 私は 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 に答える