2009-11-04 5 views
5

Je reçois les dates de l'alimentation dans ce format:comment formater le temps de la date d'atome

2009-11-04T19:55:41Z 

Je suis en train de le formater en utilisant la fonction date() en PHP, mais je reçois une erreur disant:

Date() attend le paramètre 2 à être long, objet donné dans /bla/bla.php

J'ai essayé d'utiliser preg_replace() pour enlever le T et la Z, mais ne peut toujours pas le faire fonctionner.

Répondre

12

strtotime est une fonction merveilleuse pour convertir les formats de date à timestamp UNIX.

Cela vous donnera ce que vous êtes après:

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

Rappelez-vous que 'strtotime' utilise le fuseau horaire, il peut trouver (par exemple dans la variable d'environnement' TZ'. La documentation de la fonction ne fournit aucun pointeur sur ce qui arrive aux horodatages qui intègrent les informations de fuseau horaire. – Joey

+0

a fonctionné très bien :) merci –

0

Vous pouvez utiliser la fonction strtotime.

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

C'est la date standard combinée ISO 8601 et le format temps donné en UTC (d'où le Z).

Vous pourriez être en mesure d'analyser à l'aide

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

ou, si cela ne fonctionne pas (ne devrait pas, si PHP prétend comprendre ISO 8601), vous pouvez remplacer le Z par « +00: 00 » .

2

Essayez d'utiliser strptime:

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

Qu'en est-

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

ou

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

ou les deux

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

ou mieux encore

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

N'a pas connu cet atome constant, utile! – COil

Questions connexes