Je suis en train d'écrire une location de matériel d'application, où les clients sont facturés des frais de location d'équipement en fonction de la durée (en jours) de la location. Donc, en gros, (tarif journalier * nombre de jours) = total des frais.
Pour des informations instantanées sur le côté client, je suis en train d'utiliser Javascript pour calculer la différence de deux dates du calendrier. J'ai cherché partout, mais rien de ce que j'ai trouvé est tout à fait ce que je cherche. La plupart des solutions que j'ai vu sont de la forme:
function dateDiff1(startDate, endDate) {
return ((endDate.getTime() - startDate.getTime()) / 1000*60*60*24);
}
Mon problème est que l'équipement peut être vérifié et renvoyé à tout moment de la journée au cours de ces deux dates sans frais supplémentaires. Le code ci-dessus est le calcul du nombre de périodes de 24 heures entre les deux dates, quand je suis vraiment intéressé par le nombre de jours de calendrier.
Par exemple, si quelqu'un extrait de l'équipement à 6h du matin, le 6 juillet, et l'a renvoyée à 10 heures du soir, le 7 juillet, le code ci-dessus calcule que plus d'une période de 24 heures avaient passé, et serait de retour 2. Le résultat souhaité est 1, puisque seule une date du calendrier est écoulé (c'est à dire de la 6e à la 7e).
Le plus proche de la solution que j'ai trouvé est cette fonction:
function dateDiff2(startDate, endDate) {
return endDate.getDate() - startDate.getDate();
}
qui fait exactement ce que je veux, aussi longtemps que les deux dates sont dans le même mois. Cependant, depuis getDate() ne renvoie le jour du mois (c'est à dire de 1 à 31), il ne fonctionne pas lorsque les dates de durée de plusieurs mois (par exemple, le 31 juillet à août 1 est de 1 jour, mais au-dessus de la calcuates 1 - 31, ou -29).
Sur le backend, en PHP, je suis en utilisant gregoriantojd(), qui semble très bien fonctionner (voir ce post pour un exemple). Je ne peux pas trouver une solution équivalente en Javascript.
N'importe qui ont des idées?