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) и широко поддерживается в языках программирования и базах данных,