PHP формат даты даты dd/mm/yyyy => yyyy-mm-dd

Возможный дубликат:
Формат строки даты PHP

Я пытаюсь преобразовать дату из dd/mm/yyyy => yyyy-mm-dd. У меня есть функция mktime() и другие функции, но я не могу заставить ее работать. Я удалил explode исходную дату, используя '/' в качестве разделителя, но мне не удалось изменить формат и заменить '/' на '-'.

Любая помощь будет принята с благодарностью.

Ответ 1

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

Используйте функцию даты по умолчанию.

$var = "20/04/2012";
echo date("Y-m-d", strtotime($var) );

EDIT Я только что протестировал его, и как-то PHP не работает с форматом dd/mm/yyyy. Здесь другое решение.

$var = '20/04/2012';
$date = str_replace('/', '-', $var);
echo date('Y-m-d', strtotime($date));

Ответ 2

Попробуйте использовать DateTime::createFromFormat

$date = DateTime::createFromFormat('d/m/Y', "24/04/2012");
echo $date->format('Y-m-d');

Выход

2012-04-24

РЕДАКТИРОВАТЬ:

Если дата - 5/4/2010 (оба - Д/М/ГГГГ или ДД/ММ/ГГГГ), этот метод ниже используется для преобразования 5/4/2010 в 2010-4-5 (оба: ГГГГ-ММ-ДД или YYYY-MD) формат.

$old_date = explode('/', '5/4/2010'); 
$new_data = $old_date[2].'-'.$old_date[1].'-'.$old_date[0];

ВЫХОД:

2010-4-5

Ответ 3

Здесь другое решение, не использующее date(). не очень умный:)

$var = '20/04/2012';
echo implode("-", array_reverse(explode("/", $var)));

Ответ 4

Сделайте это:

date('Y-m-d', strtotime('dd/mm/yyyy'));

Но убедитесь, что 'dd/mm/yyyy' является фактической датой.

Ответ 5

Я вижу отличные ответы, поэтому нет необходимости повторять здесь, поэтому я хотел бы предложить несколько советов:

Я бы рекомендовал использовать целочисленное значение Unix Timestamp вместо удобочитаемого формата даты для внутренней обработки времени, а затем использовать функцию PHP date() для преобразования значения отметки времени в читаемый человеком формат даты для отображения пользователем. Вот грубый пример того, как это должно быть сделано:

// Get unix timestamp in seconds
$current_time = date();

// Or if you need millisecond precision

// Get unix timestamp in milliseconds
$current_time = microtime(true);

Затем используйте $current_time как необходимо в вашем приложении (сохранить, сложить или вычесть и т.д.), А затем, когда вам нужно отобразить значение даты для своих пользователей, вы можете использовать date() чтобы указать желаемый формат даты:

// Display a human-readable date format
echo date('d-m-Y', $current_time);

Таким образом, вы избежите головной боли, связанной с форматами дат, конверсиями и часовыми поясами, поскольку ваши даты будут в стандартизированном формате (Unix Timestamp), который является компактным, независимым от часового пояса (всегда в UTC) и широко поддерживается в языках программирования и базах данных,