Pregunta

Tengo una columna datetime en MySQL.

¿Cómo puedo convertirlo a la pantalla como mm / dd / aa H: M (AM / PM) utilizando PHP?

¿Fue útil?

Solución 2

Para convertir una fecha recuperada de MySQL al formato solicitado ( mm / dd / aa H: M (AM / PM) ):

// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM

Consulte las opciones de formato de fecha de PHP para ajustar el formato.

Otros consejos

Si está buscando una manera de normalizar una fecha al formato MySQL, use lo siguiente

$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );

La línea $ phpdate = strtotime ($ mysqldate) acepta una cadena y realiza una serie de heurísticas para convertir esa cadena en una marca de tiempo de Unix.

La línea $ mysqldate = date ('Ymd H: i: s', $ phpdate) usa esa marca de tiempo y PHP date para convertir esa marca de tiempo nuevamente en el formato de fecha estándar de MySQL.

( Nota del editor : esta respuesta está aquí debido a una pregunta original con una redacción confusa, y la utilidad general de Google que proporcionó esta respuesta, incluso si no respondió directamente la pregunta que existe ahora)

Si está utilizando PHP 5, también puede intentarlo

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
$valid_date = date( 'm/d/y g:i A', strtotime($date));

Referencia: http://php.net/manual /en/function.date.php

Finalmente, la solución correcta para PHP 5.3 y superior:

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');

Una forma más fácil sería formatear la fecha directamente en la consulta de MySQL, en lugar de PHP. Consulte la entrada manual de MySQL para DATE_FORMAT .

Si prefiere hacerlo en PHP, entonces necesita la función date , pero Primero tendré que convertir el valor de su base de datos en una marca de tiempo.

Olvida todo. Solo usa:

$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))

Para formatear correctamente un objeto DateTime en PHP para almacenar en MySQL use el formato estandarizado que usa MySQL, que es ISO 8601 .

PHP ha tenido este formato almacenado como una constante desde la versión 5.1.1, y recomiendo usarlo en lugar de escribir manualmente la cadena cada vez.

$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);

Esto, y una lista de otras constantes de PHP DateTime están disponibles en http://php.net/manual/en/class.datetime.php#datetime.constants.types

Esto debería dar formato a un campo en una consulta SQL:

SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename

Utilice la función fecha :

<?php
    echo date("m/d/y g:i (A)", $DB_Date_Field);
?>

Dependiendo de su configuración de fecha y hora de MySQL. Normalmente: 2011-12-31 07:55:13 . Esta función muy simple debería hacer la magia:

function datetime()
{
    return date( 'Y-m-d H:i:s', time());
}

echo datetime(); // display example: 2011-12-31 07:55:13

O un poco más de avance para que coincida con la pregunta.

function datetime($date_string = false)
{
    if (!$date_string)
    {
        $date_string = time();
    }
    return date("Y-m-d H:i:s", strtotime($date_string));
}
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

Si no desea cambiar todas las funciones de su código PHP, para mostrar el formato de fecha esperado, cámbielo en la fuente: su base de datos.

Es importante nombrar las filas con el operador como como en el ejemplo anterior (como dateFrom, como dateUntil). Los nombres que escriba allí son los nombres, las filas se llamarán en su resultado.

La salida de este ejemplo será

[Día del mes, numérico (0..31)]. [Nombre del mes (enero ... diciembre)]. [Año, numérico, cuatro dígitos]

Ejemplo: 5.August.2015

Cambie los puntos con el separador de elección y marque DATE_FORMAT (fecha, formato) para obtener más formatos de fecha.

También puede hacer que su consulta devuelva la hora como una marca de tiempo de Unix. Eso eliminaría la necesidad de llamar a strtotime () y hacer las cosas un poco menos intensas en el lado de PHP ...

select  UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;

Luego, en PHP solo usa la función date () para formatearla de la forma que quieras.

<?php
  echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>

o

<?php
  echo date('F j, Y, g:i a', $row->unixtime);
?>

Me gusta este enfoque en lugar de usar MySQL DATE_FORMAT , ya que le permite reutilizar la misma consulta para capturar los datos y le permite modificar el formato en PHP.

Es molesto tener dos consultas diferentes solo para cambiar el aspecto de la fecha en la interfaz de usuario.

Puede tener problemas con las fechas no devueltas en la marca de tiempo de Unix, así que esto me funciona ...

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))

Esto funcionará ...

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));

Usando PHP versión 4.4.9 & amp; MySQL 5.0, esto funcionó para mí:

$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate

PubDate es la columna en MySQL .

$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', <*>POST['date'])))."'";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top