2009-11-04 30 views
5

Me estoy poniendo fechas de alimentación en este formato:cómo dar formato de fecha y hora átomo de

2009-11-04T19:55:41Z 

Estoy tratando de darle formato utilizando la función date() en PHP, pero me da un error que dice:

fecha() espera parámetro 2 para ser largo, objeto dado en /bla/bla.php

I intentado utilizar preg_replace() para eliminar el T y la Z, pero todavía no puede hacerlo funcionar.

Respuesta

12

strtotime es una función maravillosa para la conversión de formatos de fecha a las marcas de tiempo de Unix.

Esto le dará lo que está buscando:

date('my format here', strtotime('2009-11-04T19:55:41Z')); 
+1

Recuerde que 'strtotime' utiliza la zona horaria se puede encontrar (por ejemplo, en la variable de entorno' TZ'. La documentación de la función no proporciona ningún indicador sobre lo que sucede con las marcas de tiempo que incrustan la información de la zona horaria. – Joey

+0

funcionó muy bien :) gracias –

0

Puede usar la función strtotime.

echo date('Y-M-D', strtotime($feedDate)); 
1

Esa es la norma ISO 8601 de formato estándar combinada fecha y hora aparece en UTC (de ahí la Z).

Usted puede ser capaz de analizar usando

DateTime::createFromFormat('c', '2009-02-03'); 

o, si eso no funciona (en caso contrario, si PHP afirma entender la norma ISO 8601), puede reemplazar la Z por "00: 00" .

2

Intente utilizar strptime:

$date = strptime($str, "Y-m-d\TH:i:s\Z"); 
9

¿Qué hay de

\DateTime::createFromFormat(\DateTime::ATOM, $AtomDate); // converting Atom date to object 

o

date(\DateTime::ATOM, $timestamp); // formatting timestamp to Atom time 

o ambos

$dto = \DateTime::createFromFormat(\DateTime::ATOM, $AtomDate); 
date('d-M-Y H:i:s', $dto->getTimestamp()); // formatting Atom date to anything you want 

o incluso mejor

$dto = \DateTime::createFromFormat(\DateTime::ATOM, $AtomDate); 
$formattedDate = $dto->format('d-M-Y H:i:s'); 
+1

No sabía este átomo constante, útil! – COil

Cuestiones relacionadas