У меня есть строка даты/времени, соответствующая ISO 8601 2014-12-11T23:43:44+00:00
, которую я передаю через HTTP на веб-сервер. Там я извлекаю данные из поля HTTP POST, и все отлично, когда у меня print_r мои параметры, значение возвращается как 2014-12-11T23:43:44 00:00
.Ошибка, когда дата и время ISO 8601 отправлены по HTTP и созданы в PHP. Объект DateTime
Что я заметил, так это то, что в настоящее время отсутствует +
, (я предполагаю, что это в представлении данных, а не в том, что данные закодированы как и не является (?) Проблемой, не так ли?)
Затем на разбор значения в качестве параметра, чтобы создать новый объект DateTime, я получаю следующее сообщение об ошибке:
DateTime::__construct(): Failed to parse time string (2014-12-11T23:43:44 00:00) at position 20 (0): Double time specification
Я предполагаю, что это потому, что он видит, как 00:00
, добавить свою еще раз после 23:43:44
, когда, разумеется, это разница во времени.
Это потому, что отсутствует +
или я делаю что-то еще неправильно?
Я также должен указать, что мое первоначальное значение (2014-12-11T23:43:44+00:00
) исходит из поля http://www.timestampgenerator.com ISO 8601.
Edit:
Вот код, я использую, чтобы получить строку из запроса POST в PHP:
static function request_parameters($including_request_uri = false)
{
$request_parameters = $_REQUEST;
if (!$including_request_uri)
{
unset($request_parameters[PARAMETER_NAME_REQUEST]);
}
return $request_parameters;
}
Тогда я получить значение, как это:
$parameters = RESTController::request_parameters();
$date_created = $parameters[UNIVERSALLY_UNIQUE_OBJECT_KEY_DATE_CREATED];
Вы уверены, что это POST? '+' - это одна из форм представления пространства в URL-адресе, поэтому это было бы легко объяснить, если бы мы говорили о GET. – Jon
. '+' в URL-адресе является закодированным символом пробела. Строка даты запускается через url_decode() где-то, а символ '+' декодируется в пробел. Если вы хотите передать эту '+' через строку запроса, она будет закодирована в '% 2B' –
попробуйте с $ date = preg_replace ("// "," + ", $ date); – BredeBS