Maison >développement back-end >C++ >Comment déterminer avec précision le numéro de semaine d'une date?

Comment déterminer avec précision le numéro de semaine d'une date?

Susan Sarandon
Susan Sarandonoriginal
2025-01-25 12:12:09738parcourir

How to Accurately Determine the Week Number of a Date?

Calcul précis du 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn