Intereting Posts
Плагин CKEditor Snippet не выделяет синтаксис в структуре yii2 Изображение в реальном времени из rrd-файла в PHP jQuery переключает элементы с классом только в родительском div Экспертные мнения по очень большому количеству столбцов в таблице mySQL? Создание / редактирование динамической страницы php PHP 5.5.0 с Microsoft SQL Server 2008 R2 – Нет sqlsrv_connect ()? Как вы скрываете URL-адрес файла .flv в flash-плеере? Ответ XML содержит символы «2000» и «20a0» Замена для файла :: mime () в Laravel 4 (для получения типа mime из расширения файла) Невозможно установить глобальную усадьбу: ваши требования не могут быть решены Как я могу получить возвращаемое значение части Laravel? php – почему слово округляет целое число? Ajax-вызов успешный, но не может получать значения радио от $ _POST обрезать изображение после изменения размера в библиотеке GD Решение проблемы XAMPP? У меня это установлено на моей Windows XP Dual Boot Machine

PHP – использование strtotime с форматом даты в Великобритании (dd-mm-yy)

Совсем просто на PHP у меня есть дата 8 января 2011 года, в формате 08-01-11 – когда я запускаю это в strtotime и конвертирую его обратно в другой формат даты, он возвращается к 1 августа 2011 года – не идеально!

Есть ли простой способ обойти это, вместо того, чтобы помещать все в разные массивы / переменные и обратно?

Спасибо!

strtotime() работает только с датами в США :

Функция ожидает, что будет задана строка, содержащая формат даты на английском языке в США, и попытается проанализировать этот формат на отметку времени Unix …

Вам придется либо изменить формат даты, либо использовать date_parse_from_format() (PHP 5.3+), чтобы проанализировать строку стиля в Великобритании.

Идеальное решение было бы для США использовать правильный формат даты в первую очередь …; 0)

Я делаю это, чтобы обойти это:

 $date = "31/12/2012"; $bits = explode('/',$date); $date = $bits[1].'/'.$bits[0].'/'.$bits[2]; 

$date теперь strtotime able

Из руководства по PHP:

«Даты в форматах m / d / y или dmy устраняются, глядя на разделитель между различными компонентами: если разделитель является косой чертой (/), тогда предполагается американский m / d / y, тогда как если разделитель равен тире (-) или точке (.), тогда предполагается европейский формат dmy.

Чтобы избежать потенциальной двусмысленности, лучше всего использовать даты ISO 8601 (YYYY-MM-DD) или DateTime :: createFromFormat (), когда это возможно ».

Я заменил косые черты тире, а затем strtotime работал так, как ожидалось, для британских дат.