Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 02/12/2011, 20h38   #1
Membre du Club
 
Inscription : janvier 2007
Messages : 196
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 196
Points : 54
Points : 54
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 :
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
 
<?
 
 
 
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 :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
<?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
toulousain3117 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 23h29   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonsoir,

Tu te compliques la vie pour rien regardes ici (tout est déjà prévu) :
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
<?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
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h57.


 
 
 
 
Partenaires

Hébergement Web