Conversion date

Conversion date - PHP - Programmation

Marsh Posté le 04-01-2011 à 18:51:18    

Bonjour et bonne année à tous,

 

J'ai besoin d'aide, j'ai dans ma base SQL 2 champs contenants chacune des dates et heures de type "JJ/MM/YYYY H:M:s" , je récupère dans un fichier PHP mais je sais pas comment faire pour calculer le temps écoulé entre ces 2 dates ??

 

J'aimerai avoir un truc du genre "Nbre de Jours + heure + minutes" écoulé

 

Alors j'aimerai avoir une aide car je ne sais pas comment faire !! si quelqu'un a une idée :) je sais qu'il existe des exemples comme celui là

 

$d1 = new DateTime('2009-06-08 20:30:00');
$d2 = new DateTime('2009-06-10 20:30:00');
$diff = $d1->diff($d2);

 

mais moi j'ai des dates en ANGLAIS comme "21/10/2009 15:08:12" et bien-sur cela marche po

 

Merci de d'avance


Message édité par maxdata le 04-01-2011 à 19:00:45
Reply

Marsh Posté le 04-01-2011 à 18:51:18   

Reply

Marsh Posté le 04-01-2011 à 19:16:26    

tu peux convertir tes dates grâce a date_parse_from_format


Message édité par stealth35 le 04-01-2011 à 19:16:35
Reply

Marsh Posté le 04-01-2011 à 19:37:50    

Merci pour ta réponse, j'ai regardé "date_parse_from_format" et j'ai récuperé cet exemple :

 


<?php
$date = "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));
?>

 

mais comment l'adapter a ceux que je veux faire ? car le retour me donne

 

Array ( [year] => 2009 [month] => 1 [day] => 6 [hour] => 13 [minute] => 0 [second] => 0 [fraction] => [warning_count] => 0 [warnings] => Array ( ) [error_count] => 0 [errors] => Array ( ) [is_localtime] => 1 [zone_type] => 1 [zone] => -60 [is_dst] => )


Message édité par maxdata le 04-01-2011 à 19:40:57
Reply

Marsh Posté le 04-01-2011 à 20:24:52    

tu trouveras les correspondances ici :
http://php.net/manual/fr/function.date.php

Reply

Marsh Posté le 04-01-2011 à 20:59:12    

Je l'ai adapté, mais comment extraire les valeurs affichés dans Array ?

Reply

Marsh Posté le 04-01-2011 à 21:03:15    

pas besion de les extraires ca te renvoie un datetime...
au lieu de ca :
$d1 = new DateTime('2009-06-08 20:30:00');
 
c'est
$d1 = date_parse_from_format('...')
 
ou
$d1 = DateTime::createFromFormat('...')

Reply

Marsh Posté le 05-01-2011 à 21:48:03    

merci pour ton aide, je viens de tester  
 
$dat1 =  date_parse_from_format('08/09/2010 20:30');
$dat2 =  date_parse_from_format('08/09/2010 21:30');
$diff = $dat1->diff($dat2);  
print_r ($diff);
 
mais j'ai cette erreur que je n'arrive pas a résoudre
 
Warning: date_parse_from_format() expects exactly 2 parameters, 1 given in C:\wamp\www\admin\main.php

Reply

Marsh Posté le 05-01-2011 à 22:21:43    

relis bien la doc

Reply

Marsh Posté le 05-01-2011 à 22:54:32    

cela marche avec ce format avec des tirés

 

$format = 'd-m-Y H:i:s';
$date = DateTime::createFromFormat($format, '15-02-2011 15:16:17');
echo "Format: $format; " . $date->format('d-m-Y H:i:s') . "\n";

 

moi ce que je veux c'est avec des / dans les dates car je récupère ces dates en fr sous le format

 

$format = 'd/m/Y H:i';

 

mais je ne vois aucun exemple dans la doc


Message édité par maxdata le 05-01-2011 à 22:55:25
Reply

Marsh Posté le 05-01-2011 à 22:56:58    

qu'est ce qui te bloque alors ? ta tout sous les yeux la  

Reply

Marsh Posté le 05-01-2011 à 22:56:58   

Reply

Marsh Posté le 05-01-2011 à 23:10:45    

bien quand je remplace comme ceci, j'ai une erreur

 

$format = 'd-m-Y H:i:s';
$date = DateTime::createFromFormat($format, '15/02/2011 15:16:17'); // c'est le format de date que je vais récupérer dans ma base
echo "Format: $format; " . $date->format('d-m-Y H:i:s') . "\n"; // c'est la date de sortie que j'ai besoin

 

erreur :
Fatal error: Call to a member function format() on a non-object in ...


Message édité par maxdata le 05-01-2011 à 23:12:46
Reply

Marsh Posté le 05-01-2011 à 23:50:36    

pourquoi mettre d-m-Y H:i:s ?


Message édité par stealth35 le 06-01-2011 à 00:09:07
Reply

Marsh Posté le 06-01-2011 à 00:03:32    

oui et pour pouvoir faire un diff après :)

Reply

Marsh Posté le 06-01-2011 à 00:14:28    

ta date  15/02/2011 15:16:17
donc ton format c'est : d/m/Y H:i:s
 
createFromFormat attend le format et la date, je vois vraiment pas ce qui  
 
apres le diff le format sera le meme

Reply

Marsh Posté le 06-01-2011 à 22:01:30    

ok c'est bon cela marche nikel, merci a toi !! ouff un pas en avant :)
 
il me reste un dernier souci, c'est le diff, j'ai  
 
$format = 'd/m/Y H:i';
$d1 = DateTime::createFromFormat($format, $Date_Creation);;
 
$format = 'd/m/Y H:i';
$d2 = DateTime::createFromFormat($format, $Date_Fin);;
 
$diff = $d1->diff($d2);  
print_r ($diff);
 
j'ai le résultat, mais dans un array, comment l'avoir normalement ? je cherche en faisant des tests mais, je n'ai toujours pas trouvé, j'ai remplacer print_r $diff par echo $diff ; ...etc mais nada


Message édité par maxdata le 06-01-2011 à 22:03:44
Reply

Marsh Posté le 06-01-2011 à 22:14:41    

J'ai trouvé c'est bon :)
 
$interval = $d1->diff($d2);
echo $interval->format('%R%m Mois %R%d Jour(s) %R%h H %R%i m ');

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed