Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ QDateTime::fromString

Автор: igor_bogomolov 15.5.2010, 13:11

Есть строки вида

Цитата
Apr 21 13:10:21 als-au kernel: message

Необходимо выделить дату и преобразовать её в QDateTime


    QString str1 = QLatin1String("Apr 21 13:10:21 als-au kernel: message");
    QString str2 = QLatin1String("Jan  1 13:08:43 efm16 kernel: message");

    QRegExp sep(QLatin1String("\\s+"));
    QString str_t1 = str1.section(sep, 0, 2);
    QString str_t2 = str2.section(sep, 0, 2);

    QDateTime dt1 = QDateTime::fromString(str_t1, QLatin1String("MMM d hh:mm:ss"));
    QDateTime dt2 = QDateTime::fromString(str_t2, QLatin1String("MMM d hh:mm:ss"));

    qDebug() << str_t1 << dt1;
    qDebug() << str_t2 << dt2;

Цитата(Вывод)
"Apr 21 13:10:21" QDateTime("")
"Jan 1 13:08:43" QDateTime("")


Никак не могу понять как правильно сделать преобразование из строки в QDateTime

Автор: Litkevich Yuriy 15.5.2010, 13:44

ты замечание по функции не прочитал:

Цитата
Note: Unlike the other version of this function, day and month names must be given in the user's local language. It is only possible to use the English names if the user's language is English.


а вот у QDate::fromString я не вижу подобной оговорки.

Автор: igor_bogomolov 15.5.2010, 13:57

После прочтения легче не стало. Т.е. получается что такой формат мне не преобразовать что ли?
QDate тоже не помог.

Легче свой велосипед написать :(
Или я всётаки делаю что то не так?

Автор: Litkevich Yuriy 15.5.2010, 14:04

Сделал вот так вот:

    QLocale english(QLocale::English);
    qDebug() << english.toDateTime("Apr 21 13:10:21", "MMM d hh:mm:ss");
вывод:
QDateTime("Сб 21. апр 13:10:21 1900")
года не было по этому он 1900, а вот зачем он субботу печатает, не знаю, может это особенность qDebug()

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)