Russian Qt Forum

Qt => Общие вопросы => Тема начата: neosapient от Июль 12, 2008, 18:01



Название: Как узнать часовой пояс и летнее/зимнее время относительно GTM
Отправлено: neosapient от Июль 12, 2008, 18:01
Есть компьютер с запущеной программой. Программа получает поток данных с меткой времени GTM. Требуется отобразить данные в местном времени.

Как узнать часовой пояс относительно GTM, в котором находиться компьютер пользователя?

Также требуется понять - зимнее или летнее время сейчас на машине клиента? Следует учесть, что есть страны, в которых не происходит переход с летнего на зимнее время.


Название: Re: Как узнать часовой пояс и летнее/зимнее время относительно GTM
Отправлено: Unnamed_Hero от Июль 13, 2008, 08:18
смотреть методы какого-нибудь QDateTime
setTimeSpec()
toTimeSpec()

Следует принять во внимание, что многие функции работы с временем переводят время в GMT.
например secsTo().

В ассистанте всё хорошо написано.


Название: Re: Как узнать часовой пояс и летнее/зимнее время относительно GTM
Отправлено: Alex03 от Июль 14, 2008, 06:38
GTM или GMT?

GMT - практически тоже самое что и UTC. (Про QDateTime уже отписали)


Название: Re: Как узнать часовой пояс и летнее/зимнее время относительно GTM
Отправлено: neosapient от Июль 15, 2008, 11:44
Подскажите какой функцией можно узнать часовой пояс относительно гринвича.

Например, есть компьютер под Windows, на котором в настройках свойств:дата-время (в часах) клиент указывает часовой пояс.
Предполагаю что под Юникс клиент также задает часовой пояс.

Есть ли кроссплатформенное решение, чтоб узнать какой часовой пояс выставил клиент ?


Название: Re: Как узнать часовой пояс и летнее/зимнее время относительно GTM
Отправлено: Alex03 от Июль 15, 2008, 12:16
Всякие POSIX функции типа gmtime, localtime, tzset/_tzset кроссплатформенные.

Можно только Qt пользовать, чёнить типа:
Код:
    QDateTime dtLocal = QDateTime::currentDateTime();
    QDateTime dtUTC = QDateTime(dtLocal.date(), dtLocal.time(), Qt::UTC);
    uint nTimeShift = dtUTC.secsTo(dtLocal);
А то и проще.