2015-07-17 3 views
1

У меня есть настраиваемый плагин Moodle, который кто-то еще написал. Пользователь вводит дату в плагине, и эта дата записывается в отношении учебной деятельности.PHP date parsing

Первоначально у меня была проблема, когда плагин мог бы ошибаться в некоторых датах и ​​путаться между форматом даты AU (UK) и форматом даты в США. Я исправил эту проблему, используя решение отсюда (How to make strtotime parse dates in Australian (i.e. UK) format: dd/mm/yyyy?).

Но теперь странная ошибка всплывает каждый сейчас и потом, когда определенные даты (в частности, 2 июля, 2015) получает это года и дня транспонировать. Таким образом, 02-07-2015 записывается как 15-07-2002.

Это не похоже на вещь даты AU AUDIO, потому что это должно просто переворачивать день и месяц, а не год. Кроме того, это происходит только с этой конкретной датой. 01-07-2015 и 03-07-2015 работа хорошо.

Что еще более расстраивает то, что я не могу воспроизвести это на нашем промежуточном сервере. Проблема возникает только на нашем производственном сервере, хотя они оба работают с тем же кодом и той же версией Moodle.

Что я могу поделиться кода, как я обработки дату, которая ...

$date[$i] = strtotime(str_replace('/', '-', $date[$i])); 

Это заставило меня интересно, если есть некоторые настройки PHP, которые могут быть причиной этого. Или что-то еще, что я смотрю?

FYI, производственный сервер поддерживается платным хостинг-провайдером, и у меня нет доступа к файлу php.ini (но я делаю это на стадии постановки).

У кого-нибудь есть такие проблемы? Или вы можете предложить, где я могу начать искать проблему?

+1

plz xplain с кодом – Bugfixer

+1

Итак, как именно вы анализируете дату и как вы ее проверяете неправильно? – zerkms

+0

Как я уже сказал, кто-то еще написал этот плагин, так что это не мое. Также есть много кода, и если ошибка в коде, я понятия не имею, какой бит имеет значение. –

ответ

0

пытаются настроить формат в дату функции, как показано ниже, в месте использования str_replace

if $dat = '2015-07-17'; 
$date= date('d-m-Y', strtotime($dat)); 

ИЛИ

$date= date('d:m:Y', strtotime($dat)); 

ИЛИ

$date= date('d/m/Y', strtotime($dat)); 

ИЛИ

$date= date('m-d-Y', strtotime($dat));