Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
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 25/03/2011, 00h12   #1
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
Par défaut écart entre 2 dates fonctionne pas toujours

Bonjour,

j'ai un bout de code qui me calcule la différence entre 2 dates jour de début et fin inclus. Je l'utilise depuis 8 mois sans problème et là je n'y comprend rien, le 28 mars n'est pas compté suivant sa position début, fin ou milieu de période).

Différence entre 26-03-2011 et 27-03-2011 = 2 jours ce qui est normal
Différence entre 27-03-2011 et 28-03-2011 = 1jours il manque un jour on devrait avoir 2jours
Différence entre 28-03-2011 et 29-03-2011 = 2 jours ce qui est normal
Différence entre 26-03-2011 et 29-03-2011 = 3jours il manque un jour on devrait avoir 4jours

Code :
1
2
3
4
5
6
7
8
9
10
11
12
$debut_garde='2011-03-27';
$fin_garde='2011-03-28';
 
$debut_garde_ex = explode('-',$debut_garde);	//je recupère le jour, mois et année	
$time_dg = mktime(0, 0, 0, $debut_garde_ex[1], $debut_garde_ex[2], $debut_garde_ex[0]); // passe en secondes debut_garde		
 
$fin_garde_ex = explode('-',$fin_garde);	//récupère le jour, mois et année	
$time_fg = mktime(0, 0, 0, $fin_garde_ex[1], $fin_garde_ex[2], $fin_garde_ex[0]); // passe en secondes fin_garde
 
$ecart = $time_fg - $time_dg+86400; //différence fin_garde - début_garde + un jour
$ecart_jour_garde = floor($ecart/3600/24); // conversion en jours
echo $ecart_jour_garde;

Quelqu'un à une solution ou idée pour ce 28 mars, je suis preneur.

Merci
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 03h07   #2
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Ce serait pas dû au passage à l'heure d'été ?
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 18h38   #3
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
c'est une idée mais le passage se fait dans la nuit du 26 au 27 mars et c'est le 28 mars qui me semble ne pas être compté.
De plus le passage change l'heure que de 1 heure et moi il me manque 1 jour entier. Faut que je trouve une solution pour y remédier.
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 19h15   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
utilise date_diff, un jour c'est pas forcement 24h
de plus le explode + mktime est inutile, utilise strtotime
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 20h01   #5
Invité régulier
 
jm schweitzer
Inscription : juin 2010
Messages : 39
Détails du profil
Informations personnelles :
Nom : jm schweitzer

Informations forums :
Inscription : juin 2010
Messages : 39
Points : 6
Points : 6
L'erreur vient bien du changement d'heure, entre le 27 mars et le 28 mars il manque 3600 secondes soit une heure et comme j'utilise floor et que floor arrondie à l'entier inférieur......... on à l'erreur.
Pour le moment j'ai fait +3600 ce qui résout le problème temporairement. C'est pas beau mais pour le moment ca fonctionne.

merci pour l'aide.
jmsch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 22h21   #6
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Si tu as php >= 5.3 la méthode "date_diff" qu'indique stealth35 est de loin la plus simple pour résoudre ce pb.
Sinon si tu récupères tes dates depuis une bdd il y a aussi DATEDIFF depuis MySQL 4.1
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h06.


 
 
 
 
Partenaires

Hébergement Web