2009-12-20 9 views
3

J'ai une date comme Mar 15 décembre 2009. Comment puis-je le convertir en secondes?PHP: convertir la date en secondes?

Mise à jour: Comment puis-je convertir une date formatée comme ci-dessus pour l'horodatage Unix?

Répondre

25

Je suppose par seconde que vous voulez dire un UNIX timestamp.

strtotime() devrait aider.

+0

Ouais, l'horodatage UNIX! c'est ce que je voulais dire. Merci pour l'aide – baltoro

5

Vous voulez dire comme un horodatage UNIX-? Essayez:

echo strtotime('Tue Dec 15 2009'); 
+0

Merci beaucoup Hanse – baltoro

15

Vous pouvez utiliser la fonction strtotime pour convertir cette date à un horodatage:

$str = 'Tue Dec 15 2009'; 
$timestamp = strtotime($str); 

Et, juste pour être sûr, Convertissons revenir à une date comme une chaîne:

var_dump(date('Y-m-d', $timestamp)); 

Ce qui nous donne:

string '2009-12-15' (length=10) 

(ce qui prouve strtotime a fait comprendre notre jour ^^)



[modifier 2012-05-19] que d'autres questions pourraient pointer certains lecteurs ici: Notez que strtotime() n'est pas la seule solution, et que vous devriez être en mesure de travailler avec la classe DateTime, qui fournit des fonctionnalités intéressantes - en particulier si vous utilisez PHP> = 5.3


Dans ce cas, vous pouvez utiliser quelque chose comme la partie suivante de code:

$str = 'Tue Dec 15 2009'; 
$format = 'D F d Y'; 
$dt = DateTime::createFromFormat($format, $str); 
$timestamp = $dt->format('U'); 


DateTime::createFromFormat() permet un pour créer un objet DateTime de presque toute date, peu importe comment il est formatté, comme vous pouvez spécifier le format que vous datez dans (Cette méthode est disponible avec PHP> = 5.3).

Et DateTime::format() vous permettra de formater cet objet à presque n'importe quel format de date - y compris un UNIX Timestamp, comme demandé ici.

+0

Merci beaucoup Martin. J'ai aimé votre partie de vérification. :) – baltoro

+0

@Usman: de rien :-) ;; eh bien, je l'ai parfois eu de mauvaises surprises ai avec strtotime (surtout parce que je suis français et notre format dates n'est pas le même que celui en anglais), donc je préfère être prudent ^^ Ce –

+0

est la meilleure réponse, pas celui vérifié. – nottinhill