Je recherche un script qui calcul le nombre de jours ouvrés dans un
mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a
part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop
l'algo simple, en une passe a mettre en place.
Si vous avez des idées, je suis preneur
Merci
--
Jérémie
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Je recherche un script qui calcul le nombre de jours ouvrés dans un mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop l'algo simple, en une passe a mettre en place. Si vous avez des idées, je suis preneur
Bon, je réponds et je réfléchis en même temps, du coup pardon si ma réponse n'est pas très structurée.
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très adaptée pour des calculs de calendrier : tu risques toujours de tomber sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions de calendrier : <http://fr3.php.net/calendar>
Déjà, tu peux commencer par demander combien il y a de jours dans ton mois, avec la fonction cal_days_in_month(). Si la réponse est 28, c'est qu'il y a exactement 4 semaines, donc 20 jours ouvrés. Sinon, les seuls jours qui t'intéressent sont les (cal_days_in_month()-28) qui restent à partir du 29 du mois, et tu as besoin de connaître le premier de ces jours, à savoir : jddayofweek(gregoriantojd(mois, 29, année)).
Bien. On a donc : $nb_after_28 = cal_days_in_month(CAL_GREGORIAN, $month, $year) - 28; $day_for_29 = jddayofweek(gregoriantojd($month, 29, $year)); $jours_ouvrés = 20 + <quelque chose à déterminer>;
Le <quelque chose à déterminer> dépend de $nb_after_28 (entre 0 et 3) et de $day_for_29 (entre 0 et 6). Il est assez facile à déterminer pour tous les cas (22 cas au maximum mais on doit pouvoir factoriser les calculs). Bon, je me fais un petit tableau et je reviens.
Je recherche un script qui calcul le nombre de jours ouvrés dans un
mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a
part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop
l'algo simple, en une passe a mettre en place.
Si vous avez des idées, je suis preneur
Bon, je réponds et je réfléchis en même temps, du coup pardon si ma
réponse n'est pas très structurée.
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très
adaptée pour des calculs de calendrier : tu risques toujours de tomber
sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à
l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions
de calendrier : <http://fr3.php.net/calendar>
Déjà, tu peux commencer par demander combien il y a de jours dans ton
mois, avec la fonction cal_days_in_month(). Si la réponse est 28, c'est
qu'il y a exactement 4 semaines, donc 20 jours ouvrés. Sinon, les seuls
jours qui t'intéressent sont les (cal_days_in_month()-28) qui restent à
partir du 29 du mois, et tu as besoin de connaître le premier de ces
jours, à savoir : jddayofweek(gregoriantojd(mois, 29, année)).
Bien. On a donc :
$nb_after_28 = cal_days_in_month(CAL_GREGORIAN, $month, $year) - 28;
$day_for_29 = jddayofweek(gregoriantojd($month, 29, $year));
$jours_ouvrés = 20 + <quelque chose à déterminer>;
Le <quelque chose à déterminer> dépend de $nb_after_28 (entre 0 et 3)
et de $day_for_29 (entre 0 et 6). Il est assez facile à déterminer
pour tous les cas (22 cas au maximum mais on doit pouvoir factoriser
les calculs). Bon, je me fais un petit tableau et je reviens.
Je recherche un script qui calcul le nombre de jours ouvrés dans un mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop l'algo simple, en une passe a mettre en place. Si vous avez des idées, je suis preneur
Bon, je réponds et je réfléchis en même temps, du coup pardon si ma réponse n'est pas très structurée.
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très adaptée pour des calculs de calendrier : tu risques toujours de tomber sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions de calendrier : <http://fr3.php.net/calendar>
Déjà, tu peux commencer par demander combien il y a de jours dans ton mois, avec la fonction cal_days_in_month(). Si la réponse est 28, c'est qu'il y a exactement 4 semaines, donc 20 jours ouvrés. Sinon, les seuls jours qui t'intéressent sont les (cal_days_in_month()-28) qui restent à partir du 29 du mois, et tu as besoin de connaître le premier de ces jours, à savoir : jddayofweek(gregoriantojd(mois, 29, année)).
Bien. On a donc : $nb_after_28 = cal_days_in_month(CAL_GREGORIAN, $month, $year) - 28; $day_for_29 = jddayofweek(gregoriantojd($month, 29, $year)); $jours_ouvrés = 20 + <quelque chose à déterminer>;
Le <quelque chose à déterminer> dépend de $nb_after_28 (entre 0 et 3) et de $day_for_29 (entre 0 et 6). Il est assez facile à déterminer pour tous les cas (22 cas au maximum mais on doit pouvoir factoriser les calculs). Bon, je me fais un petit tableau et je reviens.
Olivier Miakinen
Bien. On a donc : $nb_after_28 = cal_days_in_month(CAL_GREGORIAN, $month, $year) - 28; $day_for_29 = jddayofweek(gregoriantojd($month, 29, $year)); $jours_ouvrés = 20 + <quelque chose à déterminer>;
Le <quelque chose à déterminer> dépend de $nb_after_28 (entre 0 et 3) et de $day_for_29 (entre 0 et 6). Il est assez facile à déterminer pour tous les cas (22 cas au maximum mais on doit pouvoir factoriser les calculs). Bon, je me fais un petit tableau et je reviens.
Bon, j'ai la flemme de vérifier, ou de traiter ça de façon plus intelligente, mais ceci devrait marcher :
Tu peux même inclure le 20 dans chaque case du tableau. Bonne chance ! (ne pas oublier de tester tous les cas).
Bien. On a donc :
$nb_after_28 = cal_days_in_month(CAL_GREGORIAN, $month, $year) - 28;
$day_for_29 = jddayofweek(gregoriantojd($month, 29, $year));
$jours_ouvrés = 20 + <quelque chose à déterminer>;
Le <quelque chose à déterminer> dépend de $nb_after_28 (entre 0 et 3)
et de $day_for_29 (entre 0 et 6). Il est assez facile à déterminer
pour tous les cas (22 cas au maximum mais on doit pouvoir factoriser
les calculs). Bon, je me fais un petit tableau et je reviens.
Bon, j'ai la flemme de vérifier, ou de traiter ça de façon plus
intelligente, mais ceci devrait marcher :
Bien. On a donc : $nb_after_28 = cal_days_in_month(CAL_GREGORIAN, $month, $year) - 28; $day_for_29 = jddayofweek(gregoriantojd($month, 29, $year)); $jours_ouvrés = 20 + <quelque chose à déterminer>;
Le <quelque chose à déterminer> dépend de $nb_after_28 (entre 0 et 3) et de $day_for_29 (entre 0 et 6). Il est assez facile à déterminer pour tous les cas (22 cas au maximum mais on doit pouvoir factoriser les calculs). Bon, je me fais un petit tableau et je reviens.
Bon, j'ai la flemme de vérifier, ou de traiter ça de façon plus intelligente, mais ceci devrait marcher :
Tu peux même inclure le 20 dans chaque case du tableau. Bonne chance ! (ne pas oublier de tester tous les cas).
- = Cyriloch = -
Bonjour
Je recherche un script qui calcul le nombre de jours ouvrés dans un mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop l'algo simple, en une passe a mettre en place. Si vous avez des idées, je suis preneur Merci
Bonsoir, Ca ne répond pas totalement à la question, mais au cas où ça puisse servir... Pour un problème un peu similaire (calcul d'une prévision de chiffre d'affaires mensuel en fonction du chiffre d'affaires des jours passés), j'ai écrit ceci, qui fonctionne assez bien. Cordialement,
$Annee = date('Y');
// Construit un tableau contenant les jours fériés de l'année en cours
Je recherche un script qui calcul le nombre de jours ouvrés dans un
mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a
part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop
l'algo simple, en une passe a mettre en place.
Si vous avez des idées, je suis preneur
Merci
Bonsoir,
Ca ne répond pas totalement à la question, mais au cas où ça puisse
servir... Pour un problème un peu similaire (calcul d'une prévision de
chiffre d'affaires mensuel en fonction du chiffre d'affaires des jours
passés), j'ai écrit ceci, qui fonctionne assez bien.
Cordialement,
$Annee = date('Y');
// Construit un tableau contenant les jours fériés de l'année en cours
Je recherche un script qui calcul le nombre de jours ouvrés dans un mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop l'algo simple, en une passe a mettre en place. Si vous avez des idées, je suis preneur Merci
Bonsoir, Ca ne répond pas totalement à la question, mais au cas où ça puisse servir... Pour un problème un peu similaire (calcul d'une prévision de chiffre d'affaires mensuel en fonction du chiffre d'affaires des jours passés), j'ai écrit ceci, qui fonctionne assez bien. Cordialement,
$Annee = date('Y');
// Construit un tableau contenant les jours fériés de l'année en cours
Je recherche un script qui calcul le nombre de jours ouvrés dans un mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop l'algo simple, en une passe a mettre en place. Si vous avez des idées, je suis preneur
Bon, je réponds et je réfléchis en même temps, du coup pardon si ma réponse n'est pas très structurée.
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très adaptée pour des calculs de calendrier : tu risques toujours de tomber sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions de calendrier : <http://fr3.php.net/calendar>
...
Merci beaucoup, je regarde ça, et je teste votre solution. Je vous avoue que ca ne m'arrange des masses ce que vous m'annoncez, car je me suis créé une biblioteques de fonctions sur les dates basé sur date(). Je n'ai pas eu de problèmes (visibles) encore. -- Jérémie
Je recherche un script qui calcul le nombre de jours ouvrés dans un
mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a
part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop
l'algo simple, en une passe a mettre en place.
Si vous avez des idées, je suis preneur
Bon, je réponds et je réfléchis en même temps, du coup pardon si ma
réponse n'est pas très structurée.
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très
adaptée pour des calculs de calendrier : tu risques toujours de tomber
sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à
l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions
de calendrier : <http://fr3.php.net/calendar>
...
Merci beaucoup, je regarde ça, et je teste votre solution. Je vous avoue
que ca ne m'arrange des masses ce que vous m'annoncez, car je me suis
créé une biblioteques de fonctions sur les dates basé sur date(). Je
n'ai pas eu de problèmes (visibles) encore.
--
Jérémie
Je recherche un script qui calcul le nombre de jours ouvrés dans un mois, ie : du lundi au vendredi.
avec date('t', $date) et date('w', $date) j'ai pas mal d'infos, mais a part incrémenter sur le jour jusqu'au dernier, je ne vois pas trop l'algo simple, en une passe a mettre en place. Si vous avez des idées, je suis preneur
Bon, je réponds et je réfléchis en même temps, du coup pardon si ma réponse n'est pas très structurée.
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très adaptée pour des calculs de calendrier : tu risques toujours de tomber sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions de calendrier : <http://fr3.php.net/calendar>
...
Merci beaucoup, je regarde ça, et je teste votre solution. Je vous avoue que ca ne m'arrange des masses ce que vous m'annoncez, car je me suis créé une biblioteques de fonctions sur les dates basé sur date(). Je n'ai pas eu de problèmes (visibles) encore. -- Jérémie
Ca a l'air de fonctionner correctement. Merci beaucoup -- Jérémie
Olivier Miakinen
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très adaptée pour des calculs de calendrier : tu risques toujours de tomber sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions de calendrier : <http://fr3.php.net/calendar>
Merci beaucoup, je regarde ça, et je teste votre solution. Je vous avoue que ca ne m'arrange des masses ce que vous m'annoncez, car je me suis créé une biblioteques de fonctions sur les dates basé sur date(). Je n'ai pas eu de problèmes (visibles) encore.
Bon, si tu es en France et que tous tes calculs de date se font bien à l'heure 00:00 il ne devrait pas y avoir de problème puisque le changement d'heure se fait à 01:00 UTC, soit entre 02:00 et 03:00 en heure locale française. Mais il ne faudrait pas par exemple faire des calculs en fixant le jour mais en laissant l'heure du moment. Ou bien faire tourner le serveur dans un fuseau horaire à -0100 en heure d'été ou d'hiver.
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très
adaptée pour des calculs de calendrier : tu risques toujours de tomber
sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à
l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions
de calendrier : <http://fr3.php.net/calendar>
Merci beaucoup, je regarde ça, et je teste votre solution. Je vous avoue
que ca ne m'arrange des masses ce que vous m'annoncez, car je me suis
créé une biblioteques de fonctions sur les dates basé sur date(). Je
n'ai pas eu de problèmes (visibles) encore.
Bon, si tu es en France et que tous tes calculs de date se font bien
à l'heure 00:00 il ne devrait pas y avoir de problème puisque le
changement d'heure se fait à 01:00 UTC, soit entre 02:00 et 03:00
en heure locale française. Mais il ne faudrait pas par exemple faire
des calculs en fixant le jour mais en laissant l'heure du moment. Ou
bien faire tourner le serveur dans un fuseau horaire à -0100 en heure
d'été ou d'hiver.
Tout d'abord, la fonction date() qui gère aussi l'heure n'est pas très adaptée pour des calculs de calendrier : tu risques toujours de tomber sur un bug de ton script dû au timezone (fuseau horaire) ou au passage à l'heure d'été ou l'heure d'hiver. Le mieux est d'utiliser les fonctions de calendrier : <http://fr3.php.net/calendar>
Merci beaucoup, je regarde ça, et je teste votre solution. Je vous avoue que ca ne m'arrange des masses ce que vous m'annoncez, car je me suis créé une biblioteques de fonctions sur les dates basé sur date(). Je n'ai pas eu de problèmes (visibles) encore.
Bon, si tu es en France et que tous tes calculs de date se font bien à l'heure 00:00 il ne devrait pas y avoir de problème puisque le changement d'heure se fait à 01:00 UTC, soit entre 02:00 et 03:00 en heure locale française. Mais il ne faudrait pas par exemple faire des calculs en fixant le jour mais en laissant l'heure du moment. Ou bien faire tourner le serveur dans un fuseau horaire à -0100 en heure d'été ou d'hiver.