IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Temps écoulé deux dates


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut Temps écoulé deux dates
    Bonjour, je vous écris ce jour, car j'ai un script de calculé le temps écoulé entres deux dates mais je le trouve pas assez exploitable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?
    function rel_time($from, $to = null){
    $to = (($to === null) ? (time()) : ($to));
    $to = ((is_int($to)) ? ($to) : (strtotime($to)));
    $from = ((is_int($from)) ? ($from) : (strtotime($from)));
    $units = array(
    "année" => 31556926,
    "mois" => 2629744,
    "semaine" => 604800,
    "jour" => 86400,
    "heure" => 3600,
    "minute" => 60,
    "seconde" => 1,
    );
    $diff = abs($from - $to);
    setlocale(LC_TIME, "fr_FR");
    $variz=strftime("%A %d %B %Y",$from);
    $suffix = (($from > $to) ? ("from now") : (""));
    foreach($units as $unit => $mult)
    if($diff >= $mult){
    $and = (($mult != 1) ? ("") : ("et "));
    $output .= ", ".$and.intval($diff / $mult)." ".$unit.((intval($diff / $mult) == 1) ? ("") : ("s"));
    $diff -= intval($diff / $mult) * $mult;
    }
    $output .= " ".$suffix;
    $output = substr($output, strlen(", "));
    return str_replace('moiss','mois',$output);
    }
    $date_ecoule = date('m/d/Y H:i:s', $end);
     echo rel_time($date_ecoule); 
    if($end == $start) {
    echo("<b>Connecté(e)</b>");
    }
    $end correspond au temps en timestamps que j'ai dans la base de donnée ,

    Ce que je souhaiterais c'est le même genre de script mais qu'on peut exploité, qu'on puisse changé le texte. Au lieu de "Il y a 2 heures 48 minutes et 23 secondes" mettre juste "il y a 2h48 "

    J'avais déjà un script tu genres, mais pour calculé les mois et année je n'y arrive pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    37
    38
    39
    40
    41
    42
    43
    <?php 
    $jour1= date("d-m-y",$end);
    $jour2= date("d-m-y",time());
    //Définition des date au format jour-mois-année
    $date1 = "$jour1"; 
    $date2 = "$jour2";
    //Extraction des données
    list($jour1, $mois1, $annee1) = explode('-', $date1); 
    list($jour2, $mois2, $annee2) = explode('-', $date2);
    //Calcul des timestamp
    $timestamp1 = mktime(0,0,0,$mois1,$jour1,$annee1); 
    $timestamp2 = mktime(0,0,0,$mois2,$jour2,$annee2); 
    $jour= abs($timestamp2 - $timestamp1)/86400; //Affichage du nombre de jour : 27
    $time1= date("H:i:s",$end);
    $time2= date("H:i:s",time());
    //Définition des heures
    $heure1 = "$time1";
    $heure2 = "$time2";
    //Extractions des différents paramètres
    list($h1, $m1, $sec1) = explode(':', $heure1);
    list($h2, $m2, $sec2) = explode(':', $heure2);
    //Calcul des timestamps
    $timestamp1 = mktime ($h1, $m1, $sec1, 7, 9, 2006);
    $timestamp2 = mktime ($h2, $m2, $sec2, 7, 9, 2006);
    $timestamp = abs($timestamp2 - $timestamp1);
    $diff_heure = floor($timestamp / 3600); //Calcul des heures écoulées/restantes
    $timestamp = $timestamp - ($diff_heure * 3600);
    $diff_min = floor($timestamp / 60); //Calcul des minutes écoulées/restantes
    //Si il n'y a pas encore de membres qui sont passes aujourd'hui
    // on enchaîne les contrôles ci-dessous ----
    if  ($jour>= 1) { 
        echo ("$jour jours $diff_heure heures et $diff_min minutes"); 
    } 
     
    elseif ($diff_heure>=1) {
        echo ("$diff_heure heures $diff_min minutes"); }
    elseif ($diff_min>=1) { 
        echo ("$diff_min minutes"); 
    }
    elseif ($diff_min<1 && $diff_heure<1){ 
        echo ("<b>==> En Ligne <==</b>");
    }
    ?>
    cordialement

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Tu te compliques la vie pour rien regardes ici (tout est déjà prévu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
     
    function litteralPeriod_fr(DateTime $end, DateTime $start) {
       date_default_timezone_set('UTC');
     
       $diff  = $end->diff($start, true);
       $parts = array();
     
       $an = $diff->format('%y');
       if ($an) {
          $parts[] = "$an an".(($an > 1) ? 's' : null);
       }
     
       $mois = $diff->format('%m');
       if ($mois) {
          $parts[] = "$mois mois";
       }
     
       $jour = $diff->format('%d');
       if ($jour) {
          $parts[] = "$jour jour".(($jour > 1) ? 's' : null);
       }
       return implode(', ', $parts) .  ' et ' . $diff->format('%Hh%I');
    }
     
    $end   = date_create('2011-12-02 22:47');
    $start = date_create('2011-11-25 08:58');
    echo litteralPeriod_fr($end, $start); // 7 jours et 13h49
     
    $start = date_create('2001-05-01 23:45');
    echo litteralPeriod_fr($end, $start); // 10 ans, 7 mois et 22h02
    ?>

Discussions similaires

  1. creer un intervalle de temps entre deux dates en vb
    Par sikapro dans le forum VB.NET
    Réponses: 2
    Dernier message: 30/04/2014, 14h04
  2. Calcul du temps entre deux dates
    Par TheBleedz dans le forum Langage
    Réponses: 3
    Dernier message: 05/01/2014, 23h19
  3. Réponses: 3
    Dernier message: 09/09/2010, 17h47
  4. Requête pour calculer le temps entre deux dates
    Par Badboy62cfp dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 13h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo