Я собираю даты различных сообщений из базы данных. Даты находятся в следующем формате:
2009-08-12 Numeric Year - Numeric Month - Numeric Day
Как я могу переформатировать эти даты в нечто более удобное, например:
August 12, 2009 Numeric Month Numeric Date, Numeric Year
Предполагая, что дата, полученная из базы данных mysql, хранится в переменной, называемой:
$date = $row['date_selected'];
date("F d, Y", strtotime($input))
В отличие от strtotime
основе strtotime
, это позволяет гарантировать, что месяц и день будут интерпретироваться в правильном порядке независимо от настроек локали, заданных на сервере.
$date = DateTime::createFromFormat('Ym-d', '2009-08-12'); $output = $date->format('F j, Y');
$new_format = date("Your Date String", strtotime($date));
Видеть:
– http://php.net/strtotime
– http://php.net/date
В принципе, если strtotime()
может прочитать его правильно, вы можете переформатировать его в любом случае.
В этом случае Year - Month - Day
– это правильно распознанный strtotime()
, это может быть не так для других форматов.
Вы можете рассмотреть возможность форматирования даты в MySQL с помощью оператора select:
DATE_FORMAT(date,'%M %e, %Y') as date_selected
<?php echo date('F j, Y', strtotime($date));
Вы можете посмотреть на функцию php strtotime
:
http://php.net/manual/en/function.strtotime.php
Он будет анализировать большое количество представлений даты в метке времени Unix.
Затем используйте функцию date
.
Используйте его так:
// 1 февраля 2005 г.
дата печати («F j, Y», mktime (0,0,0,14,1,2004));
Используя strtodate или explode, чтобы разделить дату на свои разные компоненты, вы можете использовать функцию даты с соответствующей строкой формата: 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 г.»
<?php //Date Formatter /* date: date you want to convert format: its current format ie mdY, m/d/Y, Ymd, Y/m/d delimS: Current delimiter ie - or / or . delimF: The delimiter you want for the result NOTE: this will only convert mdY to Ymd and back */ function dtform($date,$format,$delimS,$delimF){ $dateFinal = ''; if($format == 'm'.$delimS.'d'.$delimS.'Y'){ $dateFinal_exp = explode($delimS,$date); $dateFinal = $dateFinal_exp[2].$delimF.$dateFinal_exp[0].$delimF.$dateFinal_exp[1]; }else if($format == 'Y'.$delimS.'m'.$delimS.'d'){ $dateFinal_exp = explode($delimS,$date); $dateFinal = $dateFinal_exp[1].$delimF.$dateFinal_exp[2].$delimF.$dateFinal_exp[0]; } return $dateFinal; } ?>