PHP: форматирование даты - ММ / ДД / ГГ> ГГГГ / ММ / ДД

0

Привет, Я пытаюсь получить некоторое форматирование даты 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));

Благодаря,
Киран

  • 0
    Этот сайт имеет функцию поиска: stackoverflow.com/questions/2487921/…
  • 0
    Ваша проблема скорее логическая, чем программная. Один вопрос может помочь вам решить его самостоятельно: спросите себя, как php может распознать, в каком формате ваша переменная $date фактически представляет дату.
Теги:
datetime
date
date-format

2 ответа

3
Лучший ответ

Самый простой способ получить 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');
  • 0
    Я использую процедурный метод, потому что я хочу сохранить его в стиле остальной части приложения. когда это добавляется в sql, это читается обратно как 01-01-1970
  • 0
    @ Kieranmv95: возвращаемые значения DateTime::format и date_format являются строками, поэтому вам не нужно обрабатывать их после вызовов формата. Также убедитесь, что значение $_GET['datepicker'] является правильным, прежде чем пытаться его проанализировать, и проверьте возвращаемое значение format . На ваш выбор процедурный стиль: это полностью зависит от вас, если вы придерживаетесь одного стиля кодирования, вы хорошо. Будьте усталым, хотя, потому что -как я сказал в comments- date_create_from_format делает возвращает объект
0

Вы можете использовать mktime:

$date = $_GET["datepicker"];
list($month, $day, $year) = explode('/', $date);
$timestamp = mktime(0, 0, 0, $month, $day, $year);

$output = date('Y-m-d', $timestamp)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню