Différence entre deux dates

BiBloOo Messages postés 24 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 2 octobre 2015 - 23 févr. 2009 à 13:54
fabian1085 Messages postés 12 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 25 août 2010 - 2 avril 2009 à 13:30
Bonjour a tous !!

En cherchant comment faire une différence entre deux dates, je suis tombé sur plusieurs choses dont ce lien ==>
http://www.phpcs.com/code.aspx?ID=27028

J'ai donc interprété  suivant mon besoin ... Mais bon ça merdouillé hihi
J'ai donc fait autrement (avec un autre lien que j'ai perdu :p)
Je vous esplique ce que je dois faire au cas ou ...
J'ai un formulaire ou l'on rentre des factures, donc des dates aussi ^^
Sauf qu'il arrive qu'une facture soit a cheval sur deux années ... Dans ce cas la, il me faut faire un calcul pour calculé le montant de l'année n et de l'année n+1

Voici mon code ==>
            $annee = substr($dateFin, 6, 2);
            $unJour = "01/01/".$annee;

            $deb = mktime(0,0,0,substr($dateDeb,1,2),substr($dateDeb,3,2),substr($dateDeb,6,2));
            $fin = mktime(0,0,0,substr($dateFin,1,2),substr($dateFin,3,2),substr($dateFin,6,2));
            $nbJ = ($fin - $deb)/(60*60*24);

            $deb = mktime(0,0,0,substr($dateDeb,1,2),substr($dateDeb,3,2),substr($dateDeb,6,2));
            $fin = mktime(0,0,0,substr($dateProDeb,1,2),substr($dateProDeb,3,2),substr($dateProDeb,6,2));
            $nbJdeb = ($deb -$fin)/(60*60*24);

            $deb = mktime(0,0,0,substr($unJour,1,2),substr($unJour,3,2),substr($unJour,6,2));
            $fin = mktime(0,0,0,substr($dateFin,1,2),substr($dateFin,3,2),substr($dateFin,6,2));
            $nbJfin = ($fin - $deb)/(60*60*24);

            //$nbJannee = round((strtotime($dateDeb) - strtotime($dateFin))/(60*60*24)-1)
            $proDeb = ($montant/$nbJ)*$nbJdeb;
            $proFin = ($montant/$nbJ)*($nbJfin+1);

J'ai donc par exemple une date de début du 16/12/08 et une date de fin du 14/02/09 (pur exemple )
Ma différence entre ces deux dates est de 294 ... Gné ?? Oui c'est impossible !! Moi j'arrive a 60 de tête ...

Ensuite je veux savoir combien de jour j'ai sur l'année 2008 et combien de jour sur l'année 2009 (pour pouvoir faire le calcul de proratisation dont je vous parlé, ahhhhh de la compta lol)

Et la patatra j'ai le droit a -151.958333333 jours sur 2008 et 90.9583333333 jours sur 2009 ...

Du coup bah mon calcul de répartition de montant dépasse largement le montant entrer !!

Je en sais vraiment pas d'où mon problème vient ...
Si quelqu'un pouvait m'éclairer ...
Si jamais vous avez des questions, allez y

PS : J'ai pas su trouvé si on devait mettre des balises pour le code sur le forum ...

1 réponse

fabian1085 Messages postés 12 Date d'inscription mercredi 11 février 2009 Statut Membre Dernière intervention 25 août 2010 3
2 avril 2009 à 13:30
Juste un truc si ta date est
16/12/08

Ton  :
$deb = mktime(0,0,0,substr($dateDeb,1,2),substr($dateDeb,3,2),substr($dateDeb,6,2));
 
Donnera
 $deb = mktime(0,0,0,6/,12,);

tu devrai plutot le faire comme ca :

$deb = mktime(0,0,0,substr($dateDeb,0,2),substr($dateDeb,3,2),substr($dateDeb,5,2));

Pareil pour date de fin.

Essaie ca ira pt mieu

Salut
0
Rejoignez-nous