"Bobe" a écrit dans le message de news: bnp2e2$mm0$
Essayez strtotime()
ouaip. et ben ca marche pas (chez moi en tout cas)
C'est dans la doc pourtant, index des fonctions -> dates et heures :)
ben ouaip mais ca marche pas. Etienne
P'tit Marcel
Etienne SOBOLE écrivit:
et bien je t'invite a essayer. je te donne meme la ligne si tu veux :)
echo strtotime("Mon, 27 Oct 2003 12:39:25 +0100");
moi ça me donne : 1067254765
Cela dit, la fonction fait appel je crois à des routines Linux qui ne sont pas disponibles sur tous les serveurs.
Si cela ne marche pas, tu peux toujours te fabriquer une fonction (comme je l'ai fait avant de remarquer que php avait une fonction pour ça ;-)
Au cas où voici le script que j'emplois pour décoder des dates :
# conversion d'un timestamp nntp en date unix *GMT* function conversion($date) { static $time_zone=array(); static $moisangl=array(1=>"jan","feb","mar","apr","may","jun","jul","aug", "sep","oct","nov","dec"); static $tz_serveur='?';
# essai de strtotime tout simplement $dt=strtotime($date); if($dt<>-1) { if($tz_serveur=='?') { $t_s=gettimeofday(); # on récupère le fuseau horaire du serveur $tz_serveur=$t_s['minuteswest']*60; } $dt+=$tz_serveur; # convertit le timestamp Unix en GMT return $dt; }
# simulation de strtotime en mieux
# récupèration de la liste des timezone alphabétiques si pas déjà fait if(sizeof($time_zone)==0) { $tz=fopen('TimeZone.txt','r'); if($tz) { while(!feof($tz)) { $ligne=fgets($tz,4096); if(strstr($ligne,'EndOfFile')) break; list($tzcode,$tzval,$foo)=explode('|',$ligne,3); $time_zone[$tzcode]=$tzval; } fclose($tz); } } # premier décodage de la date en j m a hh mm ss preg_match('`(.*) ([0-9]{1,2} [a-zA-Z]{3,4} [0-9]{4}) ([0-9]{2}:[0- 9]{2}:[0-9]{2}) (.*)`U',$date,$tableau); list($j,$mois,$a)=explode(" ",$tableau[2]); $moiscourt=strtolower(substr($mois,0,3)); $m=array_search($moiscourt,$moisangl); list($hh,$mm,$ss)=explode(":",$tableau[3]);
# conversion en GMT en tenant compte du fuseau horaire if(preg_match('`([+|-]{1})([0-9]{2})([0-9]{2})`',$tableau[4],$shift)) $timeshift= (float) ($shift[1]=='-'? -1 : 1) * ($shift[2] + ($shift[3]/60)); elseif((preg_match('`([A-Z]{2,4})`',$tableau[4],$tzone)) and (array_key_exists($tzone[1],$time_zone)) ) { $timeshift=(float) $time_zone[$tzone[1]]; } else $timeshift=0;
# timestamp unix en GMT return mktime($hh-$timeshift,$mm,$ss,$m,$j,$a); }
Le script utilise un fichier texte servant à convertir les fuseaux horaires alphabétiques en décalahge horaire : ADT|-3|Atlantic Daylight AHST|-10|Alaska-Hawaii Standard AKDT|-8|Alaska Daylight AKST|-9|Alaska Standard AST|-4|Atlantic Standard AT|-2|Azores AWST|8|West Australian Standard BRST|-3|Brazil Standard BST|1|British Summer BT|3|Baghdad, USSR Zone 2 CADT|10.50|Central Australian Daylight CAST|9.50|Central Australian Standard CAT|-10|Central Alaska CCT|8|China Coast, USSR Zone 7 CDT|-5|Central Daylight CEST|2|Central European Summer CET|1|Central European CST|-6|Central Standard EADT|11|Eastern Australian Daylight EAST|10|Eastern Australian Standard EDT|-4|Eastern Daylight EEST|3|Eastern Europe Summer EET|2|Eastern Europe, USSR Zone 1 EST|-5|Eastern Standard FST|2|French Summer FWT|1|French Winter GB|1|GMT with daylight savings GMT|0|Greenwich Mean GST|10|Guam Standard, USSR Zone 9 HDT|-9|Hawaii Daylight HST|-10|Hawaii Standard IDLE|12|International Date Line East IDLW|-12|International Date Line West IST|5.50|Indian Standard IT|3.50|Iran JAVT|7|Java JST|9|Japan Standard, USSR Zone 8 MDT|-6|Mountain Daylight MEST|2|Middle European Summer MESZ|2|Middle European Summer MET|1|Middle European MEWT|1|Middle European Winter MEZ|1|Middle European MSD|3|Moscow Daylight MSK|3|Moscow MST|-7|Mountain Standard NDT|-2.50|Newfoundland Daylight NFT|-3.50|Newfoundland NST|6.50|North Sumatra NT|-11|Nome NZDT|13|New Zealand Daylight NZST|12|New Zealand Standard NZT|12|New Zealand PDT|-7|Pacific Daylight PHT|8|Asia Manila PST|-8|Pacific Standard ROK|9|Republic of Korea SAST|2|South African Standard SAT|-4|Chile SST|2|Swedish Summer SWT|1|Swedish Winter UT|0|Universal (Coordinated) UTC|0|Universal (Coordinated) WAT|-1|West Africa WEST|0|Alias for Western European WET|0|Western European WST|8|West Australian Standard YDT|-8|Yukon Daylight YST|-9|Yukon Standard ZP4|4|USSR Zone 3 ZP5|5|USSR Zone 4 ZP6|6|USSR Zone 5 EndOfFile
eça -- P'tit Marcel statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/
Etienne SOBOLE écrivit:
et bien je t'invite a essayer.
je te donne meme la ligne si tu veux :)
echo strtotime("Mon, 27 Oct 2003 12:39:25 +0100");
moi ça me donne :
1067254765
Cela dit, la fonction fait appel je crois à des routines Linux qui ne sont
pas disponibles sur tous les serveurs.
Si cela ne marche pas, tu peux toujours te fabriquer une fonction (comme je
l'ai fait avant de remarquer que php avait une fonction pour ça ;-)
Au cas où voici le script que j'emplois pour décoder des dates :
# conversion d'un timestamp nntp en date unix *GMT*
function conversion($date) {
static $time_zone=array();
static $moisangl=array(1=>"jan","feb","mar","apr","may","jun","jul","aug",
"sep","oct","nov","dec");
static $tz_serveur='?';
# essai de strtotime tout simplement
$dt=strtotime($date);
if($dt<>-1) {
if($tz_serveur=='?') {
$t_s=gettimeofday(); # on récupère le fuseau horaire du serveur
$tz_serveur=$t_s['minuteswest']*60;
}
$dt+=$tz_serveur; # convertit le timestamp Unix en GMT
return $dt;
}
# simulation de strtotime en mieux
# récupèration de la liste des timezone alphabétiques si pas déjà fait
if(sizeof($time_zone)==0) {
$tz=fopen('TimeZone.txt','r');
if($tz) {
while(!feof($tz)) {
$ligne=fgets($tz,4096);
if(strstr($ligne,'EndOfFile')) break;
list($tzcode,$tzval,$foo)=explode('|',$ligne,3);
$time_zone[$tzcode]=$tzval;
}
fclose($tz);
}
}
# premier décodage de la date en j m a hh mm ss
preg_match('`(.*) ([0-9]{1,2} [a-zA-Z]{3,4} [0-9]{4}) ([0-9]{2}:[0-
9]{2}:[0-9]{2}) (.*)`U',$date,$tableau);
list($j,$mois,$a)=explode(" ",$tableau[2]);
$moiscourt=strtolower(substr($mois,0,3));
$m=array_search($moiscourt,$moisangl);
list($hh,$mm,$ss)=explode(":",$tableau[3]);
# conversion en GMT en tenant compte du fuseau horaire
if(preg_match('`([+|-]{1})([0-9]{2})([0-9]{2})`',$tableau[4],$shift))
$timeshift= (float)
($shift[1]=='-'? -1 : 1) * ($shift[2] + ($shift[3]/60));
elseif((preg_match('`([A-Z]{2,4})`',$tableau[4],$tzone)) and
(array_key_exists($tzone[1],$time_zone)) ) {
$timeshift=(float) $time_zone[$tzone[1]];
}
else $timeshift=0;
# timestamp unix en GMT
return mktime($hh-$timeshift,$mm,$ss,$m,$j,$a);
}
Le script utilise un fichier texte servant à convertir les fuseaux horaires
alphabétiques en décalahge horaire :
ADT|-3|Atlantic Daylight
AHST|-10|Alaska-Hawaii Standard
AKDT|-8|Alaska Daylight
AKST|-9|Alaska Standard
AST|-4|Atlantic Standard
AT|-2|Azores
AWST|8|West Australian Standard
BRST|-3|Brazil Standard
BST|1|British Summer
BT|3|Baghdad, USSR Zone 2
CADT|10.50|Central Australian Daylight
CAST|9.50|Central Australian Standard
CAT|-10|Central Alaska
CCT|8|China Coast, USSR Zone 7
CDT|-5|Central Daylight
CEST|2|Central European Summer
CET|1|Central European
CST|-6|Central Standard
EADT|11|Eastern Australian Daylight
EAST|10|Eastern Australian Standard
EDT|-4|Eastern Daylight
EEST|3|Eastern Europe Summer
EET|2|Eastern Europe, USSR Zone 1
EST|-5|Eastern Standard
FST|2|French Summer
FWT|1|French Winter
GB|1|GMT with daylight savings
GMT|0|Greenwich Mean
GST|10|Guam Standard, USSR Zone 9
HDT|-9|Hawaii Daylight
HST|-10|Hawaii Standard
IDLE|12|International Date Line East
IDLW|-12|International Date Line West
IST|5.50|Indian Standard
IT|3.50|Iran
JAVT|7|Java
JST|9|Japan Standard, USSR Zone 8
MDT|-6|Mountain Daylight
MEST|2|Middle European Summer
MESZ|2|Middle European Summer
MET|1|Middle European
MEWT|1|Middle European Winter
MEZ|1|Middle European
MSD|3|Moscow Daylight
MSK|3|Moscow
MST|-7|Mountain Standard
NDT|-2.50|Newfoundland Daylight
NFT|-3.50|Newfoundland
NST|6.50|North Sumatra
NT|-11|Nome
NZDT|13|New Zealand Daylight
NZST|12|New Zealand Standard
NZT|12|New Zealand
PDT|-7|Pacific Daylight
PHT|8|Asia Manila
PST|-8|Pacific Standard
ROK|9|Republic of Korea
SAST|2|South African Standard
SAT|-4|Chile
SST|2|Swedish Summer
SWT|1|Swedish Winter
UT|0|Universal (Coordinated)
UTC|0|Universal (Coordinated)
WAT|-1|West Africa
WEST|0|Alias for Western European
WET|0|Western European
WST|8|West Australian Standard
YDT|-8|Yukon Daylight
YST|-9|Yukon Standard
ZP4|4|USSR Zone 3
ZP5|5|USSR Zone 4
ZP6|6|USSR Zone 5
EndOfFile
eça
--
P'tit Marcel
statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/
et bien je t'invite a essayer. je te donne meme la ligne si tu veux :)
echo strtotime("Mon, 27 Oct 2003 12:39:25 +0100");
moi ça me donne : 1067254765
Cela dit, la fonction fait appel je crois à des routines Linux qui ne sont pas disponibles sur tous les serveurs.
Si cela ne marche pas, tu peux toujours te fabriquer une fonction (comme je l'ai fait avant de remarquer que php avait une fonction pour ça ;-)
Au cas où voici le script que j'emplois pour décoder des dates :
# conversion d'un timestamp nntp en date unix *GMT* function conversion($date) { static $time_zone=array(); static $moisangl=array(1=>"jan","feb","mar","apr","may","jun","jul","aug", "sep","oct","nov","dec"); static $tz_serveur='?';
# essai de strtotime tout simplement $dt=strtotime($date); if($dt<>-1) { if($tz_serveur=='?') { $t_s=gettimeofday(); # on récupère le fuseau horaire du serveur $tz_serveur=$t_s['minuteswest']*60; } $dt+=$tz_serveur; # convertit le timestamp Unix en GMT return $dt; }
# simulation de strtotime en mieux
# récupèration de la liste des timezone alphabétiques si pas déjà fait if(sizeof($time_zone)==0) { $tz=fopen('TimeZone.txt','r'); if($tz) { while(!feof($tz)) { $ligne=fgets($tz,4096); if(strstr($ligne,'EndOfFile')) break; list($tzcode,$tzval,$foo)=explode('|',$ligne,3); $time_zone[$tzcode]=$tzval; } fclose($tz); } } # premier décodage de la date en j m a hh mm ss preg_match('`(.*) ([0-9]{1,2} [a-zA-Z]{3,4} [0-9]{4}) ([0-9]{2}:[0- 9]{2}:[0-9]{2}) (.*)`U',$date,$tableau); list($j,$mois,$a)=explode(" ",$tableau[2]); $moiscourt=strtolower(substr($mois,0,3)); $m=array_search($moiscourt,$moisangl); list($hh,$mm,$ss)=explode(":",$tableau[3]);
# conversion en GMT en tenant compte du fuseau horaire if(preg_match('`([+|-]{1})([0-9]{2})([0-9]{2})`',$tableau[4],$shift)) $timeshift= (float) ($shift[1]=='-'? -1 : 1) * ($shift[2] + ($shift[3]/60)); elseif((preg_match('`([A-Z]{2,4})`',$tableau[4],$tzone)) and (array_key_exists($tzone[1],$time_zone)) ) { $timeshift=(float) $time_zone[$tzone[1]]; } else $timeshift=0;
# timestamp unix en GMT return mktime($hh-$timeshift,$mm,$ss,$m,$j,$a); }
Le script utilise un fichier texte servant à convertir les fuseaux horaires alphabétiques en décalahge horaire : ADT|-3|Atlantic Daylight AHST|-10|Alaska-Hawaii Standard AKDT|-8|Alaska Daylight AKST|-9|Alaska Standard AST|-4|Atlantic Standard AT|-2|Azores AWST|8|West Australian Standard BRST|-3|Brazil Standard BST|1|British Summer BT|3|Baghdad, USSR Zone 2 CADT|10.50|Central Australian Daylight CAST|9.50|Central Australian Standard CAT|-10|Central Alaska CCT|8|China Coast, USSR Zone 7 CDT|-5|Central Daylight CEST|2|Central European Summer CET|1|Central European CST|-6|Central Standard EADT|11|Eastern Australian Daylight EAST|10|Eastern Australian Standard EDT|-4|Eastern Daylight EEST|3|Eastern Europe Summer EET|2|Eastern Europe, USSR Zone 1 EST|-5|Eastern Standard FST|2|French Summer FWT|1|French Winter GB|1|GMT with daylight savings GMT|0|Greenwich Mean GST|10|Guam Standard, USSR Zone 9 HDT|-9|Hawaii Daylight HST|-10|Hawaii Standard IDLE|12|International Date Line East IDLW|-12|International Date Line West IST|5.50|Indian Standard IT|3.50|Iran JAVT|7|Java JST|9|Japan Standard, USSR Zone 8 MDT|-6|Mountain Daylight MEST|2|Middle European Summer MESZ|2|Middle European Summer MET|1|Middle European MEWT|1|Middle European Winter MEZ|1|Middle European MSD|3|Moscow Daylight MSK|3|Moscow MST|-7|Mountain Standard NDT|-2.50|Newfoundland Daylight NFT|-3.50|Newfoundland NST|6.50|North Sumatra NT|-11|Nome NZDT|13|New Zealand Daylight NZST|12|New Zealand Standard NZT|12|New Zealand PDT|-7|Pacific Daylight PHT|8|Asia Manila PST|-8|Pacific Standard ROK|9|Republic of Korea SAST|2|South African Standard SAT|-4|Chile SST|2|Swedish Summer SWT|1|Swedish Winter UT|0|Universal (Coordinated) UTC|0|Universal (Coordinated) WAT|-1|West Africa WEST|0|Alias for Western European WET|0|Western European WST|8|West Australian Standard YDT|-8|Yukon Daylight YST|-9|Yukon Standard ZP4|4|USSR Zone 3 ZP5|5|USSR Zone 4 ZP6|6|USSR Zone 5 EndOfFile
eça -- P'tit Marcel statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/
Etienne SOBOLE
"P'tit Marcel" a écrit dans le message de news:
Cela dit, la fonction fait appel je crois à des routines Linux qui ne sont pas disponibles sur tous les serveurs.
Si cela ne marche pas, tu peux toujours te fabriquer une fonction (comme je
l'ai fait avant de remarquer que php avait une fonction pour ça ;-)
Au cas où voici le script que j'emplois pour décoder des dates :
Cool. merci pour le script. m'enfin si chez toi ca marche, je vais tâcher de trouver pourquoi cela ne marche pas chez moi. sinon je prendrais ton script...
merci bien. Etienne
"P'tit Marcel" <geononauxspams@centrale-lyon.org.invalid> a écrit dans le
message de news: Xns9423DC7A6636Abulgroz7@127.0.0.1...
Cela dit, la fonction fait appel je crois à des routines Linux qui ne sont
pas disponibles sur tous les serveurs.
Si cela ne marche pas, tu peux toujours te fabriquer une fonction (comme
je
l'ai fait avant de remarquer que php avait une fonction pour ça ;-)
Au cas où voici le script que j'emplois pour décoder des dates :
Cool. merci pour le script.
m'enfin si chez toi ca marche, je vais tâcher de trouver pourquoi cela ne
marche pas chez moi.
sinon je prendrais ton script...
Cela dit, la fonction fait appel je crois à des routines Linux qui ne sont pas disponibles sur tous les serveurs.
Si cela ne marche pas, tu peux toujours te fabriquer une fonction (comme je
l'ai fait avant de remarquer que php avait une fonction pour ça ;-)
Au cas où voici le script que j'emplois pour décoder des dates :
Cool. merci pour le script. m'enfin si chez toi ca marche, je vais tâcher de trouver pourquoi cela ne marche pas chez moi. sinon je prendrais ton script...