crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QDateTime и часовые пояса.
AlexMad
  опции профиля:
сообщение 6.11.2014, 19:19
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 6.11.2014
Пользователь №: 4269

Спасибо сказали: 0 раз(а)




Репутация:   0  


Есть задача из текстовых строк получить значение времени в миллисекундах от начала эпохи.
Тут вопросов нет.
curTime = QTime::fromString ("10:31:54:000", "hh:mm:ss:zzz");
curDTime.setTime (curTime);
lCurTime = curDTime.toMSecsSinceEpoch ();
xLDEBUG(0) << curTime << curDTime.time() << lCurTime;

Потом, в целях проверки делаю обратное преобразование
curTime = curDTime.fromMSecsSinceEpoch(lCurTime).time();
xLDEBUG(0) << curTime << curDTime.fromMSecsSinceEpoch(lCurTime).time() << lCurTime;

Получаю разницу в три часа. Вроде бы оно должно делать все в одном и томже формате. Почему при первом преобразовании используется один часовой пояс, а при обратном другой (скорее всего, UTC)?
Вот вывод в консоль результата:
main.cpp main 25 QTime("10:31:54.000") QTime("10:31:54.000") 37914000 
main.cpp main 29 QTime("13:31:54.000") QTime("13:31:54.000") 37914000
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AlexMad
  опции профиля:
сообщение 6.11.2014, 20:53
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 6.11.2014
Пользователь №: 4269

Спасибо сказали: 0 раз(а)




Репутация:   0  


Кажется нашел решение. Не уверен, что оно правильное, но оно работает. Перед использованием переменной
QDateTime curDTime

Я её инициализирую нулем
curDTime.setMSecsSinceEpoch(0);
. Хотя был уверен, что это должно делаться автоматически.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 8:52