Привет, Я пытаюсь получить некоторое форматирование даты PHP. Проблема, с которой я столкнулась, - это случайные неожиданные результаты, возвращаемые вместо правильной даты после того, как я попытаюсь их отформатировать.
У меня есть дата MM/DD/YY
переданная как строка, и мне интересно, как преобразовать ее в YYYY/MM/DD
. Когда он пытается конвертировать дату, это похоже на то, что он остается в одном месте, но пытается преобразовать отдельный раздел, поэтому MM (12)
отправляется в год YYYY (2012)
Вот раздел кода, который я использовал, чтобы попробовать и изменить формат:
$date = $_GET["datepicker"];
$arr[$i] = strftime("%Y-%m-%d", strtotime($date));
$arr[$i]
- это просто массив, в который я помещаю его, не должен ничего влиять. Я также пробовал следующее:
$arr[$i] = date("Y-m-d", strtotime($date));
Благодаря,
Киран
Самый простой способ получить DateTime::createFromFormat
вам результат - использовать класс DateTime
, в частности: DateTime::createFromFormat
:
$date = DateTime::createFromFormat('m/j/y', $_GET['datepicker']);
//now to get the outpu:
$arr[$i] = $date->format('Y-m-d');
Существует также альтернатива процедурного стиля:
$date = date_create_from_format('m/j/y', $_GET['datepicker']);
//note, date_create_from_format returns an instance of DateTime
$arr[$i] = date_format($date, 'Y-m-d');//same as $date->format('Y-m-d');
01-01-1970
DateTime::format
и date_format
являются строками, поэтому вам не нужно обрабатывать их после вызовов формата. Также убедитесь, что значение $_GET['datepicker']
является правильным, прежде чем пытаться его проанализировать, и проверьте возвращаемое значение format
. На ваш выбор процедурный стиль: это полностью зависит от вас, если вы придерживаетесь одного стиля кодирования, вы хорошо. Будьте усталым, хотя, потому что -как я сказал в comments- date_create_from_format
делает возвращает объект
Вы можете использовать mktime
:
$date = $_GET["datepicker"];
list($month, $day, $year) = explode('/', $date);
$timestamp = mktime(0, 0, 0, $month, $day, $year);
$output = date('Y-m-d', $timestamp)
$date
фактически представляет дату.