Глядя на это, исходная дата ($ date_from_webservice) находится в часовом поясе GMT + 2, а время - в полночь.
Я предполагаю, что часовой пояс, для которого настроен PHP, отличается (например, UTC), поэтому дата «кажется» такой же, какой была накануне. Тем не менее, преобразование совершенно правильно.
Чтобы решить эту проблему, у вас есть несколько вариантов:
Попросите / скажите исходному серверу вернуть дату и время в формате UTC (что и должно быть на самом деле), убедитесь, что PHP также использует UTC.
Настройте PHP на тот же часовой пояс , что и исходный сервер, используя date_default_timezone_set или в php.ini. Обратите внимание, что вы не можете просто добавлять / вычитать часы из-за перехода на летнее время.
Если вы уверены, что формат даты и времени соответствует, используйте substr
. Например:
$ sDate = substr ($ oDate, 8, 2). '.'. Substr ($ oDate, 5, 2). '.'. Substr ($ oDate, 0, 4);
Вариант 1 самый лучший. Вариант 2 опасен, если исходный сервер изменил свой часовой пояс. Вариант 3 предполагает, что формат даты и времени никогда не изменится.