[PHP] Probléme de conversion de date

WRInaute discret
Salut ,

je voudrais en effet convertir une date de type 2006-06-01T13:33:14+02:00 en un timestamp , et pour celà j'utilise strtotime , mais ça ne marche absolument pas , pourriez vous m'aider s'il vous plait ?

Merci d'avance .
 
Nouveau WRInaute
Salut,

utilises les expressions régulières !!!

Code:
$string = "2006-06-01T13:33:14+02:00";

$expr = "^([^T]*)T([^\+]*)\+";
ereg($expr,$string,$tab);
$timestamp = strtotime($tab[1]." ".$tab[2]);

La variable $timestamp contient ce que tu veux :)

++
 
Nouveau WRInaute
Salut

Moi qui ai des difficultés avec les expressions régulières j'utilise mktime()

Code:
$ta_date="2006-06-01T13:33:14+02:00";
$day=substr($ta_date,0,2);
$month=substr($ta_date,3,2);
$year=substr($ta_date,6,4);
$hour=...
$min=...
$sec=...
$ton_time=mktime($hour,$min,$sec,$month,$day,$year);
:lol:
 
WRInaute discret
Merci jobi1722 , je n'avais pas pensé aux expressions réguliéres , mais j'ai optimisé ta regex pour qu'elle soit utilisable avec le moteur PCRE ( et pas POSIX comme ereg ) car les PCRE sont plus rapides et supportent des paramétres après les délimiteurs ( ici # ) , toi tu fais [^T] car le moteur POSIX est gourmand et si tu faisait .* il va capturer tout , mais il est possible avec les PCRE d'enlever cette gourmandise et utiliser en même temps .* , c'est avec le paramétre U .
Voilà :
Code:
#^(.*)T(.*)\+([0-9]{2}):([0-9]{2})#miU
Donc je ferai :
$
Code:
string = "2006-06-01T13:33:14+02:00";

$expr = "#^(.*)T(.*)\+([0-9]{2}):([0-9]{2})#miU";
preg_match($expr,$string,$tab);
$timestamp = strtotime($tab[1]." ".$tab[2]." +".$tab[3].$tab[4]);

Et merci à toi aussi BettyBoop , il vaut mieux utiliser les regex car la date que je veux convertir va varier , l'année va peut-être être représenter en deux chiffres !

Merci en tout cas pour vos réponses .

PS : j'essaie de faire un lecteur RSS en php qui va supporter tous les formats :p
 
Discussions similaires
Haut