1

String 変数を QDateTime 形式に変換する必要があります

私のコードは見える

QString date ="Thu Jun 18 2015";
QDateTime tmp = QDateTime::fromString(date,"ddd MMM dd yyyy HH:mm:ss");

しかし、結果はThu Jan 1 00:00:00 1970.

後でこの日付を foramt に変換する必要がyyyy-MM-dd HH:mm:ssあるため、最初のステップとして文字列を にQDateTime変換し、次に最終的な形式に変換する必要があります。上記のコードに間違いはありますか?

どんな助けでも大歓迎です。

ありがとうハリス

4

1 に答える 1

6

あなたのdate文字列には時間が含まれていません.あなたが欲しいと言いましたが、これは少なくとも Qt 5.4 では失敗します. エポッシュが出力される理由はわかりませんが、Qt のバージョンに依存している可能性があります。

日付形式もロケールに依存します。たとえば、 in のドキュメントを参照して"ddd"くださいQDateTime::fromString

短縮されたローカライズされた曜日名 (例: 'Mon' to 'Sun')。QDate::shortDayName() を使用します。

残念ながら、これはそれほど明確ではありませんが、次の場合はより明確ですQDateTime::toString

短縮されたローカライズされた曜日名 (例: 'Mon' to 'Sun')。システム ロケールを使用して名前をローカライズします。つまり、QLocale::system()。

たとえば、私のロケール (ドイツ語、オーストリア) では、木曜日の "ddd" は"Do."which とは異なり"Thu"、そのロケールでは英語の略語を解析できません。

ロケール依存の出力を読み書きするときに正しいロケールを使用していることを確認するには、 を使用しますQLocale。あなたの場合、それは次のようになりますQLocale::toDateTime

QLocale locale(QLocale::English, QLocale::UnitedStates);
QDateTime dt = locale.toDateTime("Jun 18 2015", "MMM dd yyyy");

次に、ロケール依存の出力も必要な場合は、 を使用しますQLocale::toString

于 2015-06-19T06:03:39.653 に答える