Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 11/07/2011, 19h52   #1
Membre du Club
 
Homme
Analyse système
Inscription : mars 2011
Messages : 406
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Analyse système

Informations forums :
Inscription : mars 2011
Messages : 406
Points : 67
Points : 67
Par défaut soustraction entre 2 date

Bonjour,
j'ai 2 date et je veux récupéré les nombre de jours:
Code :
1
2
3
 
$a='10-07-2011';
$b='13-10-2011';
merci d'avance ??
benhsaien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2011, 20h21   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
T'as quelle version de PHP ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 09h02   #3
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Hello

Compare les timestamp et divise le tout par 24*3600.

Code :
1
2
3
4
5
6
7
8
9
10
$a='10-07-2011';
$b='13-10-2011';
 
list($d,$m,$y) = explode('-', $a);
$ta = mktime(0,0,0, $m, $d,$y);
 
list($d,$m,$y) = explode('-', $b);
$tb = mktime(0,0,0, $m, $d,$y);
 
echo "Il y a " . ceil(($tb - $ta) / 86400) . " jours entre $a et $b";
Si tu peux avoir les dates dans un format compatible avec strtotime c'est mieux, ça évite de devoir créer les timestamps manuellement avec mktime.

Tu peux aussi jouer avec DateTime::diff (PHP 5.3).
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 10h33   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
un jour c'est pas forcement 24h donc ça ne marche pas
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 10h55   #5
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
En effet, j'avais oublié le coup des heures été / hiver.

Bon sinon y'a des solutions pour PHP < 5.3 sur cette page: http://www.php.net/manual/en/function.date-diff.php
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h01   #6
Membre du Club
 
Homme
Analyse système
Inscription : mars 2011
Messages : 406
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Analyse système

Informations forums :
Inscription : mars 2011
Messages : 406
Points : 67
Points : 67
Bonjour,
je suis sous php 5.2.6
benhsaien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h25   #7
Membre du Club
 
Homme
Analyse système
Inscription : mars 2011
Messages : 406
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Analyse système

Informations forums :
Inscription : mars 2011
Messages : 406
Points : 67
Points : 67
merci pour votre aide la solution est :
Code :
echo $nbjours = round((strtotime($b) - strtotime($a))/(60*60*24));
benhsaien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h33   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par benhsaien Voir le message
merci pour votre aide la solution est :
Code :
echo $nbjours = round((strtotime($b) - strtotime($a))/(60*60*24));
c'est pareil elle est fausse, ça ne prend pas compte les changements d'heure, lis bien le lien de Benjamin
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 12h29   #9
Membre du Club
 
Homme
Analyse système
Inscription : mars 2011
Messages : 406
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Analyse système

Informations forums :
Inscription : mars 2011
Messages : 406
Points : 67
Points : 67
bah je l'est tester plusieurs fois et les résultats sont fiable . parce que pour mon cas je ne prend pas l'heure en considération seulement les date jour mois et l’année.
benhsaien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 12h33   #10
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
ça ne change rien. Tu t'expose à un bug car tu ne tiens pas compte des changements d'horaires été / hiver (en vigueur dans la plupart des pays).

comme disait Stealth, tous les jours ne font pas 24h du coup, or tu les divise par 24*3600.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 13h25   #11
Membre du Club
 
Homme
Analyse système
Inscription : mars 2011
Messages : 406
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Analyse système

Informations forums :
Inscription : mars 2011
Messages : 406
Points : 67
Points : 67
donc la meilleure solution est ??? un exemple se sera parfait.merci
benhsaien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 13h55   #12
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Comme mentionné plus haut: il y a plein de solution élégantes par ici http://www.php.net/manual/en/function.date-diff.php

Par exemple:
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
<?php
        function dateDifference($startDate, $endDate)
        {
            $startDate = strtotime($startDate);
            $endDate = strtotime($endDate);
            if ($startDate === false || $startDate < 0 || $endDate === false || $endDate < 0 || $startDate > $endDate)
                return false;
 
            $years = date('Y', $endDate) - date('Y', $startDate);
 
            $endMonth = date('m', $endDate);
            $startMonth = date('m', $startDate);
 
            // Calculate months
            $months = $endMonth - $startMonth;
            if ($months <= 0)  {
                $months += 12;
                $years--;
            }
            if ($years < 0)
                return false;
 
            // Calculate the days
                        $offsets = array();
                        if ($years > 0)
                            $offsets[] = $years . (($years == 1) ? ' year' : ' years');
                        if ($months > 0)
                            $offsets[] = $months . (($months == 1) ? ' month' : ' months');
                        $offsets = count($offsets) > 0 ? '+' . implode(' ', $offsets) : 'now';
 
                        $days = $endDate - strtotime($offsets, $startDate);
                        $days = date('z', $days);   
 
            return array($years, $months, $days);
        }
?>
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre 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 06h21.


 
 
 
 
Partenaires

Hébergement Web