Используйте strtotime()
на первом свидании, date('Y-m-d')
чтобы затем преобразовать его обратно:
$time = strtotime('10/16/2003');
$newformat = date('Y-m-d',$time);
echo $newformat;
// 2003-10-16
Запомните , что существует разница между использованием прямого слэша /
и дефиса -
в strtotime()
функции. Цитировать с php.net:
Даты в форматах m / d / y или dmy устраняются, если посмотреть на разделитель между различными компонентами: если разделитель является косой чертой (/), то предполагается, что используется американский m / d / y; тогда как если разделителем является тире (-) или точка (.), то предполагается европейский формат dmy.
Чтобы избежать двусмысленности, лучше использовать даты ISO 8601 (ГГГГ-ММ-ДД) или DateTime :: createFromFormat (), когда это возможно.
strtotime
принимает определенные форматы. Вы не можете кормить это что угодно. Вот почемуDateTime::createFromFormat
следует использовать вместоstrtotime
. К сожалению, у этого ответа слишком много отрицательных отзывов, чтобы кто-то обратил на него внимание. Это все копировать вставить в эти дни.Вы должны быть осторожны с форматами m / d / Y и mdY. PHP считает
/
означающим m / d / Y и-
dmY. Я бы явно описал формат ввода в этом случае:Таким образом, вы не в прихоти определенной интерпретации.
источник
strtotime()
функции.Чтобы проанализировать дату, вы должны использовать: DateTime :: createFromFormat ();
Пример:
Однако, будьте осторожны, потому что это приведет к сбою:
Сначала вам нужно проверить, что форматирование прошло нормально:
Теперь вместо сбоя вы получите исключение, которое вы можете перехватить, распространить и т. Д.
$ dateDE имеет неправильный формат, он должен быть "16.10.2013";
источник
Редактировать: вы также можете передать DateTimeZone в конструктор DateTime (), чтобы обеспечить создание даты для желаемого часового пояса, а не по умолчанию для сервера.
источник
Для первого свидания
На новую дату
источник
Если у вас есть формат dd-mm-yyyy, то в PHP он не будет работать должным образом. В документе PHP они имеют нижеследующее руководство.
Таким образом, вы просто не можете использовать, как вы хотите. Когда вы попытаетесь использовать формат dd / mm / yyyy с этим, тогда он удалит FALSE. Вы можете настроить следующее.
источник
Как у нас есть дата "07 / May / 2018" и нам нужна дата "2018-05-07" как mysql совместимая
Меня устраивает. наслаждаться :)
источник
Поскольку никто не упомянул об этом, вот еще один способ:
$date = date_create_from_format("m-d-Y", "10-16-2003")->format("Y-m-d");
источник
Если вы хотите принимать даты, используя американский порядок (месяц, дата, год) для европейских стилевых форматов (используя тире или точку в качестве дня, месяца, года), при этом принимая другие форматы , вы можете расширить класс DateTime:
Или вы можете сделать функцию для приема mdY и вывода Ymd:
источник
для создания даты из любой строки используйте:
$ date = DateTime :: createFromFormat ('dmy H: i', '01 -01-01 01:00 '); echo $ date-> format ('Ymd H: i');
источник