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 использует локаль винды)
одинаковы.