Получение неправильного значения для функции variant_date_to_timestamp()

В связи с этим вопросом я получаю неправильное значение для измененная дата при запросе соединения Windows ADODB для индексации файлов.

Это строка или запрос:

$recordset - > Open("SELECT System.ItemName, System.DateModified FROM  SYSTEMINDEX  WHERE DIRECTORY='file:C:/xxxx/' AND CONTAINS('xxxx')", $conn);

Я получаю хорошие результаты на локальном хосте (php 5.5.6), но не на других серверах (php 5.5.8). Я получаю неправильное значение timestamp, и поэтому оно преобразует его в неправильную дату, когда я использую функции PHP для создания собственного формата:

date_default_timezone_set(ini_get('date.timezone'));

$date = $recordset->Fields->Item("System.DateModified")->Value;
$timestamp = variant_date_to_timestamp($date);  //getting a wrong date here

$file['date'] => date('d-M-Y H:i:s', $timestamp);

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

Кажется, это связано с variant_date_to_timestamp функция PHP. Я уже установил правильный date.timezone в файле php.ini и добавил вызов date_default_timezone_set перед вызовом variant_date_to_timestamp.

Я использую PHP 5.5.8.

Я нашел подобную проблему/ошибку с комментариями в 2004 году. Это говорит о двухчасовой разнице, а также. Мне трудно поверить, что она еще не решена.


person Alvaro    schedule 14.04.2014    source источник
comment
Можете ли вы распечатать результат ini_get('date.timezone') с каждого сервера и date_default_timezone_get() непосредственно перед вашей командой date()? Я подозреваю, что часовой пояс отличается между серверами.   -  person Martin    schedule 14.04.2014
comment
Я установил правильный часовой пояс для каждого сервера. И да, это другое. Но я по-прежнему получаю результаты, отличные от тех, которые отображаются для проводника Windows, который также настроен в том же часовом поясе.   -  person Alvaro    schedule 14.04.2014
comment
Я получаю Europe/Berlin для обоих случаев.   -  person Alvaro    schedule 14.04.2014
comment
Показывает ли эхо текущей метки времени смещение на 2 часа?   -  person Stijn van Grinsven    schedule 18.04.2014
comment
@StijnvanGrinsven да. Оно делает. Даже PHP date.timezone установлен правильно, а ini_get('date.timezone') возвращает правильное значение. Почему это?   -  person Alvaro    schedule 24.04.2014
comment
Настройки даты и времени сервера также установлены правильно.   -  person Alvaro    schedule 24.04.2014
comment
Прошло несколько лет, но я думаю, что имел дело с чем-то похожим, если не с тем же самым, используя ADODB. По какой-то причине функция variant_date_to_timestamp возвращала неверные временные метки. В итоге я использовал variant_set_type($variant, VT_BSTR) для получения строкового представления даты. Это можно использовать для большинства типов вариантов, которые PHP не обрабатывает.   -  person Jeff Wooden    schedule 24.04.2014