119 votes

Comment convertir une date en ISO 8601 en PHP ?

Comment convertir mon temps de travail de 2010-12-30 23:21:46 au format de date ISO 8601 ? (-_- ;)

261voto

alex Points 186293

Orienté objet

C'est la méthode recommandée.

$datetime = new DateTime('2010-12-30 23:21:46');

echo $datetime->format(DateTime::ATOM); // Updated ISO8601

Procédure

Pour les versions plus anciennes de PHP, ou si vous êtes plus à l'aise avec le code procédural.

echo date(DATE_ISO8601, strtotime('2010-12-30 23:21:46'));

44voto

trante Points 3811

Après PHP 5, vous pouvez l'utiliser : echo date("c"); format ISO 8601 datetime.

http://ideone.com/nD7piL

Note pour commentaires :

En ce qui concerne cette Ces deux expressions sont valables pour le fuseau horaire, pour le format de base : ±[hh]:[mm], ±[hh][mm], or ±[hh] .

Mais notez que +0X:00 est correct, et que +0X00 est incorrect pour un usage étendu. Il est donc préférable d'utiliser date("c") . Une discussion similaire aquí .

5voto

John Slegers Points 509

Comment convertir l'ISO 8601 en unixtimestamp :

strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500

Comment convertir unixtimestamp en ISO 8601 (serveur de fuseaux horaires) :

date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00

Comment convertir unixtimestamp en ISO 8601 (GMT) :

date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00

Comment convertir unixtimestamp en ISO 8601 (fuseau horaire personnalisé) :

date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00

3voto

Rúbia Alves Points 41

Si vous essayez de définir une valeur dans datetime-local

date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));

//output : 2010-12-30T23:21

1voto

A.BEN Points 21

Selon le Documentation officielle de PHP vous pouvez simplement le formater en :

echo $objDateTime->format('c'); // ISO8601 formated datetime
echo $objDateTime->format(DateTime::ISO8601); // Another way to get an ISO8601 formatted string

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X