2010-12-01 6 views
0

一見非常に単純な問題に悩まされています。タイムスタンプを含むQStringからQDateTimeを取得したいと思います。私はPostgreSQLからタイムスタンプを取得しましたが、それは問題ではありません。以下は動作しないコードです:PostgreSQLタイムスタンプを含むQStringをQDateTimeに変換する

QString timestamp = "2010-10-09 19:21:46+02:00"; 
QString format = "YYYY-MM-DD HH:MM:SSTZD"; 
QDateTime dt = QDateTime::fromString(timestamp, format); 
qDebug() << dt.toString(); // outputs empty string 

私は行方不明です。ありがとう!

+0

fromStringで "TZD"形式の情報を見つけましたが、存在しません。 QDateTimeがあなたの時間文字列の+2:00部分を解析できるとは実際には言いません。 –

+0

"YYYY"は "yyyy"、 "DD" - > "dd"、 "MM:SS" - > "mm:ss"でなければなりません。 –

+0

私は[ここ](http://doc.trolltech.com/latest/qt.html#DateFormat-enum)からTZD情報を得ましたが、フォーマット文字は[QDateTime :: fromString ()](http://doc.trolltech.com/latest/qdatetime.html#fromString-2)のドキュメントを参照してください。あなたの2つのコメントが結びついて私は答えにつながったので、以下の答えを加えればそれを受け入れます。 –

答えて

0

私が作ったミスは2つありました。そこフォーマット仕様にはTZDはありませんので、私は私が行うことで、私のアプリでそれを必要としないので、タイムゾーン情報を削除:

timeStamp.chop(6); 

そしてQDateTimeを取得するには、次の形式を使用していました。小文字の書式文字に注意してください。

QDateTime createdAt = QDateTime::fromString(timeStamp, "yyyy-MM-dd HH:mm:ss"); 

上記のお役に立てれば、ありがとうございます。