Différence entre deux dates et heures calculé en secondes/minutes etc...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 117 fois - Téléchargée 16 fois

Contenu du snippet

Bonjour à tous et toutes,

J'ai pris un peu de temps pour décortiquer de quelle manière je pouvais trouver le nombre de 1/4 d'heure entre deux dates mais également entre des heures.. pour par exemple établir le début d'un travail à tel moment et le terminer à tel moment.

Dites moi si il y a plus simple, mais en cherchant, je n'ai pas trouvé ce genre de fonction :-)

Bon amusement,
Mikado

Source / Exemple :


<?
function date_diff($datedebut,$datefin)   /// format de vos dates date("Y-m-d H:i:s");
{
    list($de,$td) = explode(' ', $datedebut); // Séparation date et heure début
    list($df,$tf) = explode(' ',$datefin); // Séparation date et heure fin

    $dd = split("-",$de); $ddannee = $dd[0]; $ddmois = $dd[1]; $ddjour = $dd[2]; /// date 1
    $hd = split(":",$td); $hdheure = $hd[0]; $hdmin = $hd[1]; $hdsec = $hd[2];   /// heure 1
    
    $df = split("-",$df); $dfannee = $df[0]; $dfmois = $df[1]; $dfjour = $df[2]; /// date 2
    $hf = split(":",$tf); $hfheure = $hf[0]; $hfmin = $hf[1]; $hfsec = $hf[2];   /// heure 2

      $time1=time() - mktime($hdheure, $hdmin, $hdsec, $ddmois, $ddjour, $ddannee); 
/// difference de seconde entre 1-1-1970 et la date 1
     $time2=time() - mktime($hfheure, $hfmin, $hfsec, $dfmois, $dfjour, $dfannee); 
/// difference de seconde entre 1-1-1970 et la date 2

     $tsecs = ceil(($time1-$time2)/60/15);  /// time1 - time2  donne le nombre en secondes
                                            /// pour avoir les minutes on divise par 60
                                            /// ensuite divise par 15 pour voir le nombre de 1/4 d'heure
                                            /// et j'arrondis le tout au dessus car le quart d'heure
                                            /// débuté est automatiquement facturé

    $texte=$tsecs;         
    return $texte;
} 
?>

Pour utiliser la fonction : 

<?
$quantiteminutes=date_diff("2010-09-22 15:30:00","2010-09-22 16:16:00");
echo $quantiteminutes; /// affichage du nombre : 4  soit 4 1/4 d'heure entamés
?>

A voir également

Ajouter un commentaire

Commentaires

La plus efficace :)

function time_to_str($seconds,$precision=1){
$units=array('an'=>31556926,'mois'=>2629743,'semaine'=>604800,'jour'=>86400,'heure'=>3600,'minute'=>60,'seconde'=>1);foreach($units as $a=>$b){if($b<=$seconds){$n=intval($seconds/$b);$c[]=$n.' '.$a.($n>1?'s':'');$seconds-=$n*$b;}}return is_array($c)?str_replace('ss','s',implode(' et ',array_slice($c,0,min($precision,2)))):'un instant';
}
houndegnonm
Messages postés
12
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
16 mai 2012

très bien expliqué
abdelaziz_info
Messages postés
120
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2017

salut

Simplifier... Oh oui c’est superbe mais on va Peut-être te dire que ce n’est pas ici que tu dois poster ton code.

10/10 pour ton effort

Bon courage.
Mik4do
Messages postés
13
Date d'inscription
samedi 19 juillet 2003
Statut
Membre
Dernière intervention
4 octobre 2012

Ahhh .. oui en effet, je vais tester ce code...
Ma méthode fonctionne également mais si une ligne résume les 20 ... ça allégera le serveur.

Merci Neigedhiver ^^
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
14
Salut,

C'est bien compliqué...
Je pense qu'il est plus rapide (et plus simple, plus lisible, etc) d'utiliser strtotime() pour convertir une date en secondes. On fait une soustraction, on divise par 60, on a des heures d'écart...
En une ligne, voici comment avoir le nombre de minutes commencées entre deux dates :

$diff = ceil((strtotime($datefin) - strtotime($datedebut))/60);

Pour les heures :

$diff = ceil((strtotime($datefin) - strtotime($datedebut))/3600);

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.