QDateTime не определяет шаблон

101
07 августа 2019, 15:30

Имеется два шаблона:

const QString yearFormat = "MMM dd yyyy";
const QString timeFormat = "MMM dd hh:mm";

и код, их использующий:

QString data = getText();
auto date = data.indexOf(":") != -1 ? QDateTime::fromString(data, timeFormat) :
                    QDateTime::fromString(data, yearFormat);

getText() возвращает строки вида "Jan 29 2013" или "Dec 24 11:35", но QDateTime их не хочет парсить, date.toString() возвращает пустую строку

Answer 1

Не уверен на 100% но, попробуйте добавить скобки:

QString data = getText();
auto date = (data.indexOf(":") != -1) ? QDateTime::fromString(data, timeFormat) :
                QDateTime::fromString(data, yearFormat);

Дополнено: все таки дело не приоритете, на сколько я понимаю, QDateTime::fromString использует локаль по-умолчанию. Вам необходимо принудительно указать какую локаль успользовать:

QLocale l(QLocale::English);
QDateTime dt = l.toDateTime("Jan 29 2013", yearFormat);
qDebug() << "Dt:" << dt.toString("dd.MM.yyyy");

Дает вывод:

Dt: "29.01.2013"
READ ALSO
Проблема с сигналами между QML и С++

Проблема с сигналами между QML и С++

Проблема состоит в том, как отследить сигнал при смене песни в QMediaPlayer::durationChanged и это значение установить в Slider через свойство to?

98
Qt Signal при добавлении нового окна в приложении

Qt Signal при добавлении нового окна в приложении

Существует ли возможность в Qt посредством SIGNAL отследить, если было добавлено новое QWindow окно? Необходимо, чтобы определённый объект следил...

124
С чем связано ограничение на объявление friend функций в локальных классах?

С чем связано ограничение на объявление friend функций в локальных классах?

С чем связано ограничение на объявление friend функций в локальных классах?

98
Как сделать , чтобы после нажатия на крестик(закрыть приложение), выскакивал MessageBox?

Как сделать , чтобы после нажатия на крестик(закрыть приложение), выскакивал MessageBox?

Вот про логику, как сделать сам MessageBox , я знаюВпихиваю код в деструктор:

125