Qt: QDateTime( «Sat, 16 Jun 2012 10:48:47 GMT» )

У нас есть строка, представляющая собой отформатированный штамп даты. Допустим, «Sat, 16 Jun 2012 10:48:47 GMT». Этой строкой мы хотим проинициализировать QDateTime (Объект даты-времени в фреймворке Qt).
Не совсем очевидно, но это очень просто:

QString dt = "Sat, 16 Jun 2012 10:48:47 GMT"; 

// Локаль указываем ту в которой сервер присылает строку
QLocale loc(QLocale::English, QLocale::UnitedStates);   

// Воспроизводим строку форматирования и конвертируем
QDateTime date = loc.toDateTime( dt, "ddd, dd MMM yyyy hh:mm:ss 'GMT'");

// Указываем, что данная дата - в UTC. (GMT читаем как UTC)
date.setTimeSpec(Qt::UTC);

// Если нужно локальное время (в локальном часовом поясе)
date.toLocalTime();

Наверное, мало, кому может пригодиться, но если вы читаете — значит пригодилось. Спасибо, что читаете!

Запись опубликована в рубрике На заметку с метками , . Добавьте в закладки постоянную ссылку.

Один комментарий: Qt: QDateTime( «Sat, 16 Jun 2012 10:48:47 GMT» )

  1. Anti говорит:

    Спасибо, пригодилось. Попытка просто конвертировать дату через QDateTime::fromString с форматом «ddd, dd MMM yyyy hh:mm:ss ‘GMT'» не прокатывает, нужно обязательно через локаль.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *