Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QDateTime::fromString
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
igor_bogomolov
Есть строки вида
Цитата
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
ты замечание по функции не прочитал:
Цитата
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
После прочтения легче не стало. Т.е. получается что такой формат мне не преобразовать что ли?
QDate тоже не помог.

Легче свой велосипед написать :(
Или я всётаки делаю что то не так?
Litkevich Yuriy
Сделал вот так вот:
    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()
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.