24 декабря 2008 г. 13:32 пользователь Dmitriy A. Beloshistov <
[email protected]> написал:

> Привет!
>
> > теперь пытаемся сохранить полученное из базы значение в той же базе, в
> > результате сохраненное значение на 2 часа меньше (в Минске ГМТ+2).
> >
> > никто не может подсказать в связи с чем происходит это преобразование и
> > как его избежать?
>
> Что-то мне подсказывает, что как-то хитро сохраняете... Запихните вашу дату
> в строку например.
>
> <?php
>
>  
> $d=ibconnect('database_path/database.fdb','RoleName',$PHP_AUTH_USER,$PHP_AUTH_PW);
>  if ($d==0)
>  {
>   Echo "Connect error!";
>   exit;
>  }
>  $mydate='01.01.2009';
>  $st = "insert into TABLENAME(DATEFIELD) values ('$mydate')";
>  $sq = ibase_query($d, $st);
>  @ibase_free_result($sq);
>  @ibase_close($d);
> ?>
>
>
> WBR, Dmitry Beloshistov AKA [-=BDS=-]
>
> кусок кода похож, но мы присваем не  $mydate='01.01.2009', а значение
> timestamp, полученное на предыдущем шаге из fb.

Вот тут и начинаются интересности. т.е. локаль винды gmt+2, локаль Php gmt+2
phptime=1230117076--24-12-2008 13:11:16  -- PHPное время
webltime=1230117076--24-12-2008 13:11:16 -- то, что вернул запрос (время
базы)
timediff=0  -- разница =0
$baner->FWeblog->FQueryTime getplace=1230117076 - вот, что передаётся в SP
--- *и похоже вот здесь приходит оно, как gmt+0*
посему и не можем выяснить, оно приходит в php неправильно или в БД.

Поставили эксперимент, у винды поставили gmt+0. php-gmt+2, рестартанули апач
и fb
phptime=1230117076--24-12-2008 13:11:16  -- PHPное время
webltime=1230117076--24-12-2008 13:11:16 -- то, что вернул запрос (время
базы)
опять совпали, но при записи в fb такого значения, он записал в текущей
локали винды, т.е. на 2 часа раньше.

Абсолютно непонятно, почему такие эффекты возникают при ситуации, когда
локаль php и винды (исходим из того, что fb использует локаль винды)
одинаковы.

Ответить