web-dev-qa-db-ja.com

QStringを特定の形式でQDateに変換する方法は?

GUIにQDateEditがあります。そこからQDateQStringに変換し、データベースに追加します。 QStringの日付は、2015年12月20日の形式でデータベースに保存されます。

ユーザーが日付を編集したい場合は、GUIのQDateEditフィールドに日付を再度表示する必要があります。したがって、データベースをフェッチし、日付(QString形式)を元に戻し、QDateに戻すために再度QDateEditに変換する必要があります。 GUIのフィールド。

ただし、次の方法を使用して、そのQString形式(2015年12月20日など)をQDateに変換することはできません。

QString date_string_on_db = "20/12/2015";
QDate Date;
Date.fromString(date_string_on_db,"dd/MM/YYYY");

Dateは常にinvalidを返します。

私は何をすべきか ?

8
McLan

まず、フォーマット文字列はdd/MM/yyyyである必要があります。 QDateクラスのQtドキュメント は、yyyyが4桁の年番号として認識されると述べています。

第二に、fromStringは新しいstaticを返すQDate関数です。現在、その関数の戻り値は破棄されます。ご想像のとおり、Date変数には書き戻されません。したがって、完全に正しいコードは次のようになります。

QString date_string_on_db = "20/12/2015";
QDate Date = QDate::fromString(date_string_on_db,"dd/MM/yyyy");
16