Я вытягиваю даты различных сообщений от базы данных. Даты находятся в следующем формате:
2009-08-12
Numeric Year - Numeric Month - Numeric Day
Как может я переформатировать эти даты к чему-то более удобному для пользователя как:
August 12, 2009
Numeric Month Numeric Date, Numeric Year
Предположение, что дата, полученная от mysql базы данных, хранится в названной переменной:
$date = $row['date_selected'];
Используя strtodate или explode для разделения даты на различные компоненты, вы можете затем использовать функцию date с соответствующей строкой формата:http://php.net/manual/en/function.date.php
$date = "2009-08-12";
list($year,$month,$day) = explode("-",$date);
$formattedDate = date("F d, Y", mktime(0,0,0,$month,$day,$year));
Выводит: "12 августа 2009 года"
В отличие от примеров на основе strtotime
, это позволяет гарантировать, что месяц и день интерпретируются в правильном порядке независимо от настроек локали, указанных на сервере.
$date = DateTime::createFromFormat('Y-m-d', '2009-08-12');
$output = $date->format('F j, Y');
Вы можете рассмотреть возможность форматирования даты в MySQL с помощью оператора select:
DATE_FORMAT(date,'%M %e, %Y') as date_selected
Вы можете посмотреть на функцию php strtotime
:
http: //php.net/manual/en/function.strtotime.php
Он анализирует большое количество представлений даты на временную метку Unix.
Затем используйте функцию дата
.
Используйте его следующим образом:
// 1 февраля 2005 года
print date ("F j, Y", mktime (0,0,0,14,1,2004));
$new_format = date("Your Date String", strtotime($date));
See:
- http://php.net/strtotime
- http://php.net/date
В принципе, если strtotime()
может прочитать его правильно, вы можете переформатировать его как угодно.
В данном случае Год - Месяц - День
является правильно распознанным strtotime()
форматом, для других форматов это может быть не так.