J'ai ce problème en ce moment: étant donné un mois et un an, j'ai besoin de connaître le nombre de jours de la semaine (c'est-à-dire le nombre de jours sauf samedi et dimanche).Comment puis-je calculer le nombre de jours de la semaine dans un mois?
Cela semble si simple, et pourtant je suis déconcerté. Bien sûr, je pourrais le résoudre avec une boucle for
et vérifier si le jour est un samedi ou un dimanche, et si ce n'est pas incrémenter un compteur, mais c'est tout simplement stupide (et linéaire) vu que je suis sûr que je pourrais m'en tirer quelques divisions ou modulos.
Une idée de l'algorithme? Vous avez toute la puissance de PHP 4.4.1 à votre disposition.
EDIT Voici une for
mise en œuvre de la boucle de travail:
function weekdays_in_month($month, $year)
{
$days_in_month = days_in_month($month); // days_in_month defined somewhere
$first_day = date('w', mktime(0,0,0, $month, 1, $year));
$counter = 0;
for ($i = 0; $i < $days_in_month; $i++)
{
if (($first_day + $i + 1) % 7 >= 2)
$counter++;
}
return $counter;
}
Jusqu'où dans le temps voulez-vous que cela fonctionne ? Cela devient * beaucoup * plus difficile si vous revenez assez loin pour que les transitions de règles de calendrier soient un problème. – Flexo
@awoodland Ouais ne vous inquiétez pas à ce sujet. Il doit fonctionner à partir de 2010 environ. – zneak
'days_in_month' a également besoin de' $ year' comme entrée (pour tenir compte des années bissextiles). – John