Comparaison entre 2 dates/algorithme PHP - PHP - Programmation
Marsh Posté le 22-03-2010 à 21:35:19
si tu prends comme hypothèse que les mois ont 30 jours, autant passer avec des timestamps, ça ira plus vite et le résultat sera le meme
Marsh Posté le 22-03-2010 à 21:44:04
flo850 a écrit : si tu prends comme hypothèse que les mois ont 30 jours, autant passer avec des timestamps, ça ira plus vite et le résultat sera le meme |
oué je sais...
En fait, j'essaie surtout de faire quelque chose au niveau algorithmique (en utilisant PHP) sans passer par des fonctions internes.
En plus je crois que le timestamp est limité dans le passé (pas avant 1970) et pas après une certaine date
Marsh Posté le 22-03-2010 à 21:49:45
si tu veux le faire correctement :
- regarde le nombre d'année pleine entre tes deux dates
- regarde le nombre de mois plein
- enfin regarde le nombre de jours
pour avoir le nombre d'année pleine, un truc comme ça devrait le faire :
difference = 0;
si (année(petite) < annee(grande) -1)
difference = annee(grande) -1 - annee(petite);
si (mois(petite) <= mois(grande)
difference ++;
ensuite, meme approche pour les mois, les jours, les heures et les minutes
Marsh Posté le 23-03-2010 à 13:55:42
ehben a écrit : le passé (pas avant 1970) et pas après une certaine date |
Bonjour,
Je pense que tu as tort de ne pas utiliser les fonctions native. Depuis php 5.2 la fourchette de dates utilisables est illimitée avec la classe DateTime.
Tu peux essayer le code ci-dessous avec :
Il se peut qu'il reste des bugs, je n'ai pas tout testé.
Code :
|
Marsh Posté le 23-03-2010 à 14:10:45
Question bête : pourquoi tu ne veux pas passer par les timestamp Parce que là, t'as qu'à faire :
Code :
|
C'est quand même plus rapide que tout ton code et plus lisible
Marsh Posté le 23-03-2010 à 18:52:15
si t'as PHP 5.3 regardes du coté de DateTime::diff()
http://php.net/manual/fr/datetime.diff.php
Marsh Posté le 23-03-2010 à 19:56:12
thx pour toutes ces infos
Je ne voulais pas passer par des fonctions natives, juste pour m'entraîner un peu au niveau algorithmique... Evidemment, ça simplifie le tout et c'est beaucoup plus lisible que ce que j'ai fais en effet
@jeca : je regarde ça, thx
Marsh Posté le 25-03-2016 à 18:57:23
Eh ben il est sympa, ton problème d'algo, ehben... ;-)
J'ai le même problème en PHP4 (le serveur dicte sa loi): Donc pas de diff sur des objets de classe date (PHP > 5.3).
Le code de rufo est sympa mais il y a une (grosse) erreur dans l'ordre des arguments de mktime():
Code :
|
En fait c'est
Code :
|
car l'ordre des arguments est l'anglo-saxon mois-jour-année.
mktime() retourne un nombre de secondes depuis le 1/1/1900, pour obtenir le nombre de jours il faut effectuer la division entière par 86400 (secondes par jour).
Code :
|
Marsh Posté le 22-03-2010 à 20:55:50
Bonjour
J'aimerai trouver le nombre d'année, mois, jours entre deux dates données...
Je voudrai ne pas passer par une sorte de timestamp, qui calcule le nombre de seconde depuis une date référence et de faire la différence entre les deux timestamp()
J'aimerai dans un premier temps comparer les deux dates en entré pour connaître la plus grande et faire en conséquence le calcul de la plus grande moins la plus petite puis de faire les comparaisons jours/mois/années.
Qu'en pensez-vous ?
En fait, ça me paraît un peu lourd et je me demande s'il n'y a pas un moyen plus simple qui ne me saute pas aux yeux
Je ne trouve pas d'algo là dessus sur Internet ou j'ai du mal chercher
mon code :
Hypothèse : les jours sont de 30 pour tous les mois
Ciao et thanks à qui m'aidera
Message édité par ehben le 22-03-2010 à 21:42:38