Maison >développement back-end >C++ >Comment déterminer avec précision le numéro de semaine d'une date?
Le calcul du numéro de semaine d'une date est une tâche de programmation fréquente, mais étonnamment complexe. Considérez le 31/12/2012 : de nombreuses méthodes renvoient incorrectement 53, alors qu'intuitivement, cela devrait être la semaine 1.
Le problème : les variations du calendrier
Le problème principal réside dans les incohérences du calendrier. Les calendriers .NET standard permettent aux semaines de franchir les limites de l'année, contrairement à la norme ISO 8601, qui conserve les semaines au cours d'une seule année.
La solution ISO 8601
Pour garantir l'exactitude, l'utilisation de la norme ISO 8601 est essentielle. La GetIso8601WeekOfYear
méthode suivante, conforme à cette norme, identifie correctement le 31/12/2012 comme semaine 1.
<code class="language-csharp">public static int GetIso8601WeekOfYear(DateTime time) { DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time); if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday) { time = time.AddDays(3); } return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); }</code>
Cette méthode garantit le calcul du numéro de semaine selon la norme ISO 8601, offrant des résultats cohérents et logiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!