Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & SQL-Server
PHP & SQL-Server Forum d'entraide sur SQL-Server avec PHP. Avant de poster -> FAQ SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2007, 14h49   #1
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
Par défaut Conversion datetime en date fra

Bonjour a tous je me remet encore une fois à vos connaissances,

J'ai dans une base mssql un champs qui a comme fomat datetime,lors de ma requete et affichage je me retrouve avec une date du type:
Citation:
Jan 1 2007 01:46:12:000PM
Moi j'aimerai avoir
01 Janvier 2007 dans $date
et
13:46:12 dans $Heure
Cependant je bloque un peu , j'ai parcouru pas mal de forum et de tuto sur le web pour trouver une piste ou mon bonheur mais rien ne correspond a mon besoin...
Merci pour votre aide
Bien a vous,
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h10   #2
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 714
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 714
Points : 2 689
Points : 2 689
Salut,

Tu dois faire un setlocale avant de récupérer ton format de date.

Regarde la doc de setlocale.

A+
__________________
K
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h20   #3
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
La méthode setlocale() ne marche pas sur tous les serveurs.
Il est plutot conseillé de transformer la chaine récupérée depuis mssql en un timestamp (nombre de secondes écoulées depuis un temps UNIX) et d'afficher ensuite la date et l'heure.
Regardes du coté de strtotime() il acceptera peut etre le format directement depuis une colonne datetime de mssql.

Ensuite tu as ce code :convertir une date anglaise en francais
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h21   #4
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
Je vais me pencher sur la question merci de pour ton info.
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h59   #5
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
Je n'arrive pas a faire fonctionner le set locale il me dit que j'ai trop d'arguments, mais voila un petit truc de mon cru ( je trouve ca un peu bancale dites moi ce que vous en pensez)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
while($numRows = mssql_fetch_array($result))
	{
		$Salarie  = $numRows['OID_SALARIE_'];
		$Personne = $numRows['PERSONNE_'];
		$Matricule= $numRows['MATRICULE_'];
		$Date     = $numRows['DATE_DHMS_'];
		$Heure    = $numRows['DATE_HEURE_'];	
 
	if (ereg ("([0-9]{4})([0-9]{1,2})([0-9]{1,2})", $Date, $regs))
	{
		$Date=$regs[3]."/".$regs[2]."/".$regs[1]."<BR>";
	}
 
	echo$Heure."<BR>";
 
	$Heure=substr($Heure,12,14);
 
	list($hour, $min, $sec, $am_pm) = explode(":", $Heure);
	$am_pm=substr($am_pm,3,2);
	if($am_pm =="PM")
	{
		if($hour!=12 or $hour!=00)
		{
			$hour=$hour+12;
		}	
		echo($hour."<br>");
	}
	$Heure=$hour.":".$min.":".$sec;
 
	    $donnees="<TR align=\"center\">
				<TD>".$Matricule."</TD>\r\n
				<TD>".$Date."</TD>\r\n
				<TD>".$Heure."</TD>\r\n";	
		$message.=$donnees;
 
	}
A mon avis ca fait un peu macbidouille et je test la fiabilité de mon code , si vous avez des remarques ou un exemple concret du setlocale ,
Merci
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 16h41   #6
Membre du Club
 
Inscription : janvier 2006
Messages : 250
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : janvier 2006
Messages : 250
Points : 64
Points : 64
Bon ba voici mon code final si cela interresse quelq'un j'ai mis des commentaires
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Extrait hh:mm:ss
	$Heure=substr($Heure,12,14);
//Liste les données
	list($hour, $min, $sec, $am_pm) = explode(":", $Heure);
//Extrait si PM ou AM
	$am_pm=substr($am_pm,3,2);
//Si am_pm=PM et heure est diff de 12
	if($am_pm =="PM" && $hour!=12)
	{
		$hour=$hour+12;
	}	
	elseif ($am_pm=="AM" && $hour==12)
	{
		$hour=$hour-12;
	}
			echo($Heure." => ".$hour.$am_pm."<br>");
	$Heure=$hour.":".$min.":".$sec;
Merci
javaboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h37.


 
 
 
 
Partenaires

Hébergement Web