now - Cómo mostrar una fecha como formato iso 8601 con PHP
string to date php (5)
Estilo de procedimiento:
echo date_format(date_create(''17 Oct 2008''), ''c'');
// Output : 2008-10-17T00:00:00+02:00
Estilo orientado a objetos:
$formatteddate = new DateTime(''17 Oct 2008'');
echo $datetime->format(''c'');
// Output : 2008-10-17T00:00:00+02:00
Híbrido 1:
echo date_format(new DateTime(''17 Oct 2008''), ''c'');
// Output : 2008-10-17T00:00:00+02:00
Híbrido 2:
echo date_create(''17 Oct 2008'')->format(''c'');
// Output : 2008-10-17T00:00:00+02:00
Notas:
1) También puede usar ''Ymd/TH:i:sP''
como alternativa a ''c''
para su formato.
2) La zona horaria predeterminada de su entrada es la zona horaria de su servidor. Si desea que la entrada sea para un huso horario diferente, debe configurar su zona horaria de manera explícita. Sin embargo, esto también afectará su producción:
echo date_format(date_create(''17 Oct 2008 +0800''), ''c'');
// Output : 2008-10-17T00:00:00+08:00
3) Si desea que la salida sea para una zona horaria diferente a la de su entrada, puede establecer su zona horaria explícitamente:
echo date_format(date_create(''17 Oct 2008'')->setTimezone(new DateTimeZone(''America/New_York'')), ''c'');
// Output : 2008-10-16T18:00:00-04:00
Estoy tratando de mostrar una fecha de mi base de datos MySQL como una cadena formateada ISO 8601 con PHP pero está saliendo mal.
El 17 de octubre de 2008 sale como: 1969-12-31T18: 33: 28-06: 00, lo que claramente no es correcto (el año debería ser 2008, no 1969)
Este es el código que estoy usando:
<?= date("c", $post[3]) ?>
$post[3] is the datetime (CURRENT_TIMESTAMP)
de mi base de datos MySQL.
Alguna idea de lo que va mal?
Aquí está la buena función para pre PHP 5: agregué la diferencia GMT al final, no está codificada.
function iso8601($time=false) {
if ($time === false) $time = time();
$date = date(''Y-m-d/TH:i:sO'', $time);
return (substr($date, 0, strlen($date)-2).'':''.substr($date, -2));
}
Para pre PHP 5:
function iso8601($time=false) {
if(!$time) $time=time();
return date("Y-m-d", $time) . ''T'' . date("H:i:s", $time) .''+00:00'';
}
Usando la clase DateTime disponible en PHP versión 5.2 se haría así:
$datetime = new DateTime(''17 Oct 2008'');
echo $datetime->format(''c'');
A partir de PHP 5.4, puedes hacer esto como una línea:
echo (new DateTime(''17 Oct 2008''))->format(''c'');