Как переформатировать дату в PHP? - PullRequest
24 голосов
/ 03 мая 2010

Я вытягиваю даты различных постов из базы данных. Даты в следующем формате:

2009-08-12

Numeric Year - Numeric Month - Numeric Day

Как я могу переформатировать эти даты во что-то более удобное для пользователя, например:

August 12, 2009

Numeric Month Numeric Date, Numeric Year

Предполагая, что дата, полученная из базы данных mysql, хранится в переменной с именем:

$date = $row['date_selected'];

Ответы [ 9 ]

57 голосов
/ 03 мая 2010

В отличие от примеров на основе strtotime, это позволяет вам гарантировать, что месяц и день интерпретируются в правильном порядке независимо от настроек локали, указанных на сервере.

$date = DateTime::createFromFormat('Y-m-d', '2009-08-12');
$output = $date->format('F j, Y');
49 голосов
/ 03 мая 2010

date("F d, Y", strtotime($input))

6 голосов
/ 03 мая 2010
$new_format = date("Your Date String", strtotime($date));

См:
- http://php.net/strtotime
- http://php.net/date

В принципе, если strtotime() может правильно его прочитать, вы можете переформатировать его, если хотите.

В этом случае Year - Month - Day - это правильно распознанный формат strtotime(), это может быть не так для других форматов.

4 голосов
/ 03 мая 2010

Вы можете рассмотреть возможность форматирования даты в MySQL с помощью оператора SELECT:

DATE_FORMAT(date,'%M %e, %Y') as date_selected

http://www.w3schools.com/sql/func_date_format.asp

0 голосов
/ 17 февраля 2016
<?php
//Date Formatter
/*
date: date you want to convert
format: its current format ie m-d-Y, m/d/Y, Y-m-d, Y/m/d
delimS: Current delimiter ie - or / or .
delimF: The delimiter you want for the result

NOTE: this will only convert m-d-Y to Y-m-d 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;
}
?>
0 голосов
/ 03 мая 2010

Используя 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 г.»

0 голосов
/ 03 мая 2010

Используйте это так:
// 1 февраля 2005
печать даты («F j, Y», mktime (0,0,0,14,1,2004));

0 голосов
/ 03 мая 2010

Возможно, вы захотите взглянуть на функцию php strtotime:

http://php.net/manual/en/function.strtotime.php

Он будет анализировать большое количество представлений даты в метке времени Unix.

Затем используйте функцию date.

0 голосов
/ 03 мая 2010
<?php
echo date('F j, Y', strtotime($date));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...