Comment puis-je calculer le nombre de jours ouvrés entre deux dates
Nous avons un PHP système de feuille de temps qui a été développé en interne, et a évolué au fil des ans, mais un morceau de l'information présentée à l'utilisateur le nombre de jours restant sur chaque projet.
Actuellement, je prends simplement la différence entre la date courante et la date de fin du projet, et de le diviser par 7 et multiplier par 5. Cela a suffi pour une longue période et est la plupart du temps assez précis pour les employés qui travaillent à temps plein du lundi au vendredi. Cependant, nous avons maintenant un certain nombre d'employés qui travaillent uniquement le jour impair une semaine.
Le système de feuille de temps est conscient de ce que les jours de travail du personnel, cette information est stockée dans une chaîne de caractères dans la classe utilisateur, pour un travailleur, la valeur serait NNYYYYY
(sens ssMTWTF
).
Je pourrais très facilement rendre le résultat plus précis, en divisant la différence entre les deux dates par sept, puis en multipliant le résultat par le nombre de jours de travail, mais tout en faisant ce changement, je suis envisagent de produire un beaucoup plus précis des moyens de calcul de la valeur réelle.
La manière la plus simple qui vient à l'esprit serait d'utiliser une boucle entre les deux dates, en comparant le jour de la semaine de travail de l'utilisateur modèle, ajouter un à un compteur sur les jours où l'utilisateur travaille ce jour-là.
Étant donné que ce calcul doit être effectué sur une moyenne d'environ 30 fois par page afficher en raison du nombre de projets sur la feuille de temps et de projets peuvent s'étendre sur 12 ou 18 mois, et de temps (que beaucoup de boucle pour chaque chargement de la page), je me demande si il y a une méthode plus efficace de le faire en PHP?
Bonne idée @user3386109, je n'avais pas envisagé cette approche à tous. Peut-être la peine de poster une réponse?
Je ne sais pas si je dirais que la réponse à une question, juste quelque chose à penser. Vous avez encore beaucoup de détails à travailler 🙂
Un détail blog: goo.gl/YOsfPX
OriginalL'auteur Bryan | 2014-05-03
Vous devez vous connecter pour publier un commentaire.
Peut-être cet extrait de code pour vous aider:
Une autre solution peut être:
Obtenir la date comprise entre deux dates à l'exclusion des week-ends
OriginalL'auteur Samiul Amin Shanto
Vous pouvez trouver nombre de jours de travail ci-dessous à l'aide de la fonction.
Ici vous pouvez voir DÉMONSTRATION EN DIRECT.
n'est pas en donnant la parfaite exactitude les jours avec cette formart => date(jj/mm/aa)
OriginalL'auteur Faisal
Si vous voulez trouver le nombre total de jours ouvrés entre deux dates avec les jours de la semaine de l'option. Alors ce sera l'aider à
oui merci, j'ai changé le code, veuillez vérifier
OriginalL'auteur sanu
J'ai essayé quelques solutions et ils n'ont pas de travail pour moi (m'a donné le résultat, week-end compris), j'ai donc écrit ce qu'une solution:
Où la
$from
et$to
sont des dates à partir d'une table mySQL.OriginalL'auteur Eugene Pinder