OVH Cloud OVH Cloud

conversion date vers timestamp

6 réponses
Avatar
Etienne SOBOLE
salut.

je cherche a convertir
Mon, 27 Oct 2003 12:39:25 +0100
en un timestamp

J'ai cherché dans la doc (donc inutile de me faire un :RTFM ;)
et j'ai pô trouvé

alors si quelqu'un savait comment faire...
merci

6 réponses

Avatar
P'tit Marcel
Etienne SOBOLE écrivit:

je cherche a convertir
Mon, 27 Oct 2003 12:39:25 +0100
en un timestamp

J'ai cherché dans la doc (donc inutile de me faire un :RTFM ;)
et j'ai pô trouvé


Tu devrais peut être changer de
/ /
O^O


tu veux passer d'une chaîne (string) à (to) un timestamp (time)
sachant que php cause l'anglais,
devine le nom de la fonction à employer ;-)


--
P'tit Marcel

Avatar
Bobe
Etienne SOBOLE nous a susurré le 29/10/2003 19:42:
salut.

je cherche a convertir
Mon, 27 Oct 2003 12:39:25 +0100
en un timestamp

J'ai cherché dans la doc (donc inutile de me faire un :RTFM ;)
et j'ai pô trouvé

alors si quelqu'un savait comment faire...
merci


Essayez strtotime()

C'est dans la doc pourtant, index des fonctions -> dates et heures :)

--
Bobe (Aurélien Maille)
http://webnaute.net

"la vie d'un geek est un combat perpétuel contre l'imperfection"

Avatar
Etienne SOBOLE
"P'tit Marcel" a écrit dans le
message de news:

tu veux passer d'une chaîne (string) à (to) un timestamp (time)
sachant que php cause l'anglais,
devine le nom de la fonction à employer ;-)


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");

a+
Etienne

Avatar
Etienne SOBOLE
"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

Avatar
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/

Avatar
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