Russian Qt Forum

Qt => Общие вопросы => Тема начата: Fregloin от Июль 08, 2011, 12:37



Название: QDateTime и time_t: не корректно работает код
Отправлено: Fregloin от Июль 08, 2011, 12:37
Нужно вычислить среднее время между двумя данными в формате time_t.
Раньше под qnx я делал так:
Код:
time_t	middle_time = (time_t) ((begin_t+end_t)/2.0);
t1 = localtime(&middle_time);
sprintf(time_buff,time_format_str,t1->tm_hour,t1->tm_min,t1->tm_sec);
И все работает корректно, отображается среднее время между началом (begin_t) и концом(end_t) интервала.
Теперь код переношу в Qt, задействовал для удобства QDateTime.
Код:
dt.setTime_t(((time_t)(fhandler->begin_time()+fhandler->end_time())/2.0));
ui->middleLabel->setText(dt.toString(timeFormatStr));
Значение времени выводится совершенно иное и не похожее на то, что должно быть.
Есть ли способ с помощью QDateTime вычислить среднее время между begin_time и end_time, при условии что они имеют тип time_t?


Название: Re: QDateTime и time_t: не корректно работает код
Отправлено: LisandreL от Июль 08, 2011, 13:18
Код
C++ (Qt)
   QDateTime date1 = QDateTime::fromString( "2011/07/08 12:59:56.030", "yyyy/MM/dd hh:mm:ss.zzz" );
   QDateTime date2 = QDateTime::fromString( "2011/07/06 12:59:56.030", "yyyy/MM/dd hh:mm:ss.zzz" );
   QDateTime date3 = QDateTime::fromTime_t( ( date1.toTime_t() + date2.toTime_t() ) / 2 );
   qDebug() << date3.toString( date3.toString( "yyyy/MM/dd hh:mm:ss.zzz" ) );
Всё работает, ну разве что милисекунды теряются, но в time_t их и нет.