Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#388 closed баг (fixed)

Ошибка преобразования времени

Reported by: san Owned by: dimag
Priority: critical Milestone: 1 очередь
Component: ПО MC04-Dispatcher. Пульт диспетчера/техника Keywords: audio
Cc: alx

Description

В Фильтре аудиозаписей время начала-конца аудиозаписи выводится неправильно

Change History (10)

comment:1 by san, 8 years ago

Summary: Ошибка с преобразования времениОшибка преобразования времени

comment:2 by san, 8 years ago

Cc: alx added

comment:3 by alx, 8 years ago

Предположительно проблема в том, что не учитывается (не инициализируется) временная зона.

Предлагаю, чтобы не заморачиваться с установкой временных зон в mysql, получать времена из базы данных в виде UNIXTIME с помощью функции UNIX_TIMESTAMP(), а затем уже конвертировать их в отображаемое значение в клиентской программе, как это сделано в запросе таблицы recordings.

comment:4 by dimag, 8 years ago

Keywords: audio added
Resolution: fixed
Status: newclosed

r402
Изменил работу с времен начала и окончания записи, как рекомендованно.
Для работы с временем использую ту временную зону, что и используется в Вариной программе.

comment:5 by san, 8 years ago

Resolution: fixed
Status: closedreopened

Я правильно понял, по изменениям в коде, что ты конвертируешь время всегда в GMT+3?
Зачем привязывать программу к какому-то определённому часовому поясу?
А если завтра программу запустят во Владивостоке?

Отображаемое в программе время должно соответствовать часовому поясу пользователя.

comment:6 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

r403
Теперь часовый пояс в котором находиться компьютер учитывается.

comment:7 by alx, 8 years ago

Проект не собирается с Qt4 - там нет QDateTime::fromTime_t(uint seconds, Qt::!TimeSpec spec, int offsetSeconds = 0).

Предлагаю вместо нее использовать QDateTime::fromTime_t(uint seconds).

comment:8 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

При обращении к базам данных время переведено в UNIXTIME не полностью. А именно, в условиях SELECT'а по-прежнему используется локальное время (см. #312). В результате записи переговоров фильтруются неправильно.

Предлагаю изменить условие запроса следующим образом:

WHERE UNIX_TIMESTAMP(endtime) >= 1473685200
AND UNIX_TIMESTAMP(starttime) <= 1473690659
AND has_record = 1
Last edited 8 years ago by alx (previous) (diff)

comment:9 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

r439
Изменил SQL запрос согласно рекомендованному.

comment:10 by alx, 8 years ago

In 440/dispatcher:

Так как в Qt4 нет QDateTime::fromTime_t(uint seconds, Qt::TimeSpec spec, int offsetSeconds = 0),
проект не собирался с Qt4. В ticket:388#comment:7 я предложил использовать вместо нее
QDateTime::fromTime_t(uint seconds). Так как возражений не последовало, произвел замену.
See #388.

Note: See TracTickets for help on using tickets.