hora - new datetime php
Convertir de datetime MySQL a otro formato con PHP (17)
Dependiendo de su configuración de datetime MySQL. Típicamente: 2011-12-31 07:55:13 formato. 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 adelantado para que coincida la pregunta
function datetime($date_string = false)
{
if (!$date_string)
{
$date_string = time();
}
return date("Y-m-d H:i:s", strtotime($date_string));
}
Tengo una columna de datetime
y datetime
en MySQL.
¿Cómo puedo convertirlo a la pantalla como mm / dd / aa H: M (AM / PM) usando PHP?
Esto debería dar formato a un campo en una consulta SQL:
SELECT DATE_FORMAT( `fieldname` , ''%d-%m-%Y'' ) FROM tablename
Esto funcionará ...
echo date(''m/d/y H:i (A)'',strtotime($data_from_mysql));
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'');
Olvidalo todo. Solo usa:
$date = date("Y-m-d H:i:s",strtotime(str_replace(''/'',''-'',$date)))
Para convertir una fecha recuperada de MySQL al formato solicitado ( mm/dd/yy 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.
Para formatear correctamente un objeto DateTime
en PHP para almacenarlo 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
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)))
Si está buscando una manera de normalizar una fecha en 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 la función de date
de PHP 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 ahora existe)
Si está utilizando PHP 5, también puede probar
$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
También puede hacer que su consulta devuelva el tiempo como una marca de tiempo Unix. Eso eliminaría la necesidad de llamar a strtotime()
y haría 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 la función DATE_FORMAT
MySQL , porque 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.
Una forma más fácil sería formatear la fecha directamente en la consulta de MySQL, en lugar de PHP. Consulte la entrada del manual de MySQL para DATE_FORMAT .
Si prefieres hacerlo en PHP, entonces necesitas la función de date , pero primero tendrás que convertir el valor de tu base de datos en una marca de tiempo.
Usando PHP versión 4.4.9 y 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 .
Utilice la función de date :
<?php
echo date("m/d/y g:i (A)", $DB_Date_Field);
?>
$date = "''".date(''Y-m-d H:i:s'', strtotime(str_replace(''-'', ''/'', $_POST[''date''])))."''";
$valid_date = date( ''m/d/y g:i A'', strtotime($date));
Referencia: http://php.net/manual/en/function.date.php
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 as 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 verifique la función DATE_FORMAT (fecha, formato) para obtener más formatos de fecha.