Russian Qt Forum

Qt => Общие вопросы => Тема начата: dmitriym от Июнь 09, 2016, 17:26



Название: Конвертация QString в QDateTime
Отправлено: dmitriym от Июнь 09, 2016, 17:26
Имеется QString с датой формата "ddMMyyhhmm", при этом дата  в  UTC. Как ее можно преобразовать в QdateTime? При fromString() преобразуется, как будто в текущем часовом, не считая того, что 010116 это 01.01.1916.


Название: Re: Конвертация QString в QDateTime
Отправлено: mokynis от Июнь 10, 2016, 10:09
так пойдет?
Код:
str_cpy="0101161324";
    QDateTime dt=QDateTime::fromString(str_cpy,"ddMMyyhhmm");
    qDebug()<<dt.addYears(100).toString("dd-MM-yyyy hh:mm");
а вообще, откуда программа знает, какой именно век имеется в виду? Например, "071117"-это взятие Зимнего или выборы Путина :-) ?


Название: Re: Конвертация QString в QDateTime
Отправлено: dmitriym от Июнь 10, 2016, 13:02
Такое и сам сделал. Основная проблема "При fromString() преобразуется, как будто в текущем часовом"


Название: Re: Конвертация QString в QDateTime
Отправлено: mokynis от Июнь 10, 2016, 13:38
не понял этого:
Цитировать
в текущем часовом
У меня эти 3 строчки кода выдали
Цитировать
"01-01-2016 13:24"
Что просил, то и получил


Название: Re: Конвертация QString в QDateTime
Отправлено: kambala от Июнь 10, 2016, 14:33
Код
C++ (Qt)
dt = dt.toUTC();


Название: Re: Конвертация QString в QDateTime
Отправлено: dmitriym от Июнь 10, 2016, 19:31
Код:
    QDateTime dt1 = QDateTime::currentDateTime();
    QString s = dt1.toUTC().toString("ddMMyyyyhhmm");
    QDateTime dt2 = QDateTime::fromString(s, "ddMMyyyyhhmm");
    QDateTime dt3 = QDateTime::fromString(s, "ddMMyyyyhhmm").toLocalTime();
    QDateTime dt4 = QDateTime::fromString(s, "ddMMyyyyhhmm").toUTC();
    QDateTime dt5 = QDateTime::fromString(s, "ddMMyyyyhhmm").toLocalTime().toUTC();

    qInfo() << s
            << dt1.toString("dd.MM.yyyy hh:mm")
            << dt2.toString("dd.MM.yyyy hh:mm")
            << dt3.toString("dd.MM.yyyy hh:mm")
            << dt4.toString("dd.MM.yyyy hh:mm")
            << dt5.toString("dd.MM.yyyy hh:mm");

Вывод

Код:
"100620161629" "10.06.2016 19:29" "10.06.2016 16:29" "10.06.2016 16:29" "10.06.2016 13:29" "10.06.2016 13:29"

Не очень понятно как

QDateTime dt2 = QDateTime::fromString(s, "ddMMyyyyhhmm");
    QDateTime dt3 = QDateTime::fromString(s, "ddMMyyyyhhmm").toLocalTime();
    QDateTime dt4 = QDateTime::fromString(s, "ddMMyyyyhhmm").toUTC();


Название: Re: Конвертация QString в QDateTime
Отправлено: popper от Июнь 11, 2016, 17:37
Код
C++ (Qt)
dt.setTimeZone(Qt::UTC)