Russian Qt Forum
Ноябрь 23, 2024, 12:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Конвертация QString в QDateTime  (Прочитано 5432 раз)
dmitriym
Гость
« : Июнь 09, 2016, 17:26 »

Имеется QString с датой формата "ddMMyyhhmm", при этом дата  в  UTC. Как ее можно преобразовать в QdateTime? При fromString() преобразуется, как будто в текущем часовом, не считая того, что 010116 это 01.01.1916.
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #1 : Июнь 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"-это взятие Зимнего или выборы Путина :-) ?
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
dmitriym
Гость
« Ответ #2 : Июнь 10, 2016, 13:02 »

Такое и сам сделал. Основная проблема "При fromString() преобразуется, как будто в текущем часовом"
Записан
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #3 : Июнь 10, 2016, 13:38 »

не понял этого:
Цитировать
в текущем часовом
У меня эти 3 строчки кода выдали
Цитировать
"01-01-2016 13:24"
Что просил, то и получил
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Июнь 10, 2016, 14:33 »

Код
C++ (Qt)
dt = dt.toUTC();
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
dmitriym
Гость
« Ответ #5 : Июнь 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();
Записан
popper
Гость
« Ответ #6 : Июнь 11, 2016, 17:37 »

Код
C++ (Qt)
dt.setTimeZone(Qt::UTC)
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.148 секунд. Запросов: 22.