Problème avec date() de PHP
Résolu/Fermé
adaro2000
Messages postés
46
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
28 octobre 2008
-
28 oct. 2008 à 14:18
adaro2000 Messages postés 46 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 28 octobre 2008 - 28 oct. 2008 à 16:03
adaro2000 Messages postés 46 Date d'inscription vendredi 23 mai 2008 Statut Membre Dernière intervention 28 octobre 2008 - 28 oct. 2008 à 16:03
A voir également:
- Problème avec date() de PHP
- Easy php - Télécharger - Divers Web & Internet
- Jm date désabonnement ✓ - Forum Consommation & Internet
- Airpods 3 date de sortie - Guide
- Trouver une date de naissance gratuit ✓ - Forum Google Chrome
5 réponses
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 14:44
28 oct. 2008 à 14:44
essaies de changer le format ("d-m-Y")
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
28 oct. 2008 à 14:55
28 oct. 2008 à 14:55
Bonjour.
Le 26/10/200 correspond (en France, en tout cas) à la date du changement d'heure.
J'ai testé ton code, avec
$fin = '2008-10-27';
$deb = '2008-10-20';
Le tableau est bon, jusqu'au 26.
En fait, le 26/10 compte 25 heures ! Comme tu calcules toi-même $day=$t_deb+(60*60*24)-1; le cas particulier du 26/10 te mets dedans...
Tu veux récupérer le TimeStamp, ou juste afficher les dates ?
Le 26/10/200 correspond (en France, en tout cas) à la date du changement d'heure.
J'ai testé ton code, avec
$fin = '2008-10-27';
$deb = '2008-10-20';
Le tableau est bon, jusqu'au 26.
En fait, le 26/10 compte 25 heures ! Comme tu calcules toi-même $day=$t_deb+(60*60*24)-1; le cas particulier du 26/10 te mets dedans...
Tu veux récupérer le TimeStamp, ou juste afficher les dates ?
adaro2000
Messages postés
46
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
28 octobre 2008
2
28 oct. 2008 à 15:22
28 oct. 2008 à 15:22
Merci pour ta réponse, Macgawel.
Dans le code, j'incrémente le timestamp par (60*60*24)-1 secondes afin de lancer une requête avec le date('Y-m-d H:i:s') obtenu. Tout marche bien avec les dates antérieures, mais avec le 26-10-2008, le date('Y-m-d H:i:s') renvoyé, au lieu que ce soit 2008-10-26 23:59:59, il me retourne 2008-10-26 22:59:59 ; les résultats ne sont donc plus bons.
Je ne sais pas si c'est du à un mauvais usage de date ou ...
As-tu une idée ?
Dans le code, j'incrémente le timestamp par (60*60*24)-1 secondes afin de lancer une requête avec le date('Y-m-d H:i:s') obtenu. Tout marche bien avec les dates antérieures, mais avec le 26-10-2008, le date('Y-m-d H:i:s') renvoyé, au lieu que ce soit 2008-10-26 23:59:59, il me retourne 2008-10-26 22:59:59 ; les résultats ne sont donc plus bons.
Je ne sais pas si c'est du à un mauvais usage de date ou ...
As-tu une idée ?
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
28 oct. 2008 à 15:55
28 oct. 2008 à 15:55
En fait, le 26/10 compte 25 heures !
Deux solutions :
1. En restant sur ton principe :
$fin = '2008-10-27'; $deb = '2008-10-20'; list($y_fin,$m_fin,$d_fin)=explode('-',$fin); list($y_deb,$m_deb,$d_deb)=explode('-',$deb); $jour = mktime(0,0,0,$m_deb,$d_deb,$y_deb); $fin = mktime(0,0,-1,$m_fin,$d_fin+1,$y_fin); while ($jour < $fin) { echo 'Debut :'.date('Y-m-d H:i:s', $jour); // On va fabriquer l'affichage de la fin de la journée. echo ' Fin :'.date('Y-m-d H:i:s', mktime(0,0,-1,$m_deb,$d_deb + 1,$y_deb)).'<br />'; // On passe au jour suivant. // Pas la peine de s'ennuyer à incrémenter le mois, mktime est capable de corriger les "erreurs" // mktime(0, 0, 0, 12, 32, 2007) renvoie le timestamp du 01/01/2008 $d_deb +=1; $jour = mktime(0,0,0,$m_deb,$d_deb,$y_deb); }
2. Dans tes requêtes, tu ne prends pas du 2008-10-26 00:00:00 au 2008-10-26 23:59:59, mais tu prends du 2008-10-26 00:00:00 inclus au 2008-10-27 00:00:00 exclus !
3. Tu modifies ta requête, pour avoir quelque chose du genre :
SELECT * FROM MATABLE WHERE TRUNC(MADATE) = '25/10/2008';
Et ça te simplifie les choses...
adaro2000
Messages postés
46
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
28 octobre 2008
2
>
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
28 oct. 2008 à 16:03
28 oct. 2008 à 16:03
Merci beaucoup pour ton code. C'est plus pratique.
Encore une fois merci.
Sincèrement.
Encore une fois merci.
Sincèrement.
briiiiix
Messages postés
575
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
18
28 oct. 2008 à 15:40
28 oct. 2008 à 15:40
C'est du a l'heure d'été, rappel toi, on a changé l'heure le weekend dernier !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
adaro2000
Messages postés
46
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
28 octobre 2008
2
28 oct. 2008 à 15:55
28 oct. 2008 à 15:55
J'ai trouvé.
Il me fallait utilisé la fonction date_default_timezone_set() pour tout gérer automatiquement.
Merci pour vos contributions.
Il me fallait utilisé la fonction date_default_timezone_set() pour tout gérer automatiquement.
Merci pour vos contributions.