Maison > développement back-end > C++ > Comment déterminer correctement le numéro de semaine d'une date donnée ?

Comment déterminer correctement le numéro de semaine d'une date donnée ?

Mary-Kate Olsen
Libérer: 2025-01-25 12:21:11
original
185 Les gens l'ont consulté

How to Correctly Determine the Week Number of a Given Date?

Calculez avec précision le numéro hebdomadaire de la date donnée

Le nombre correct de la date donnée peut être une tâche délicate, surtout lorsqu'elle s'étend sur deux ans le week-end. Cela est évident lorsque vous essayez de trouver le numéro hebdomadaire du 31 décembre 2012. De nombreuses méthodes standard renvoient des valeurs incorrectes 53 au lieu de 1.

Cette différence réside dans la différence entre le numéro hebdomadaire ISO8601 et le numéro hebdomadaire .NET. Bien que le .NET ait permis à la semaine de s'étendre sur l'année, la norme ISO n'a pas été autorisée.

Numéro de semaine ISO 8601

Selon l'ISO 8601, la première semaine de l'année est la semaine du premier jeudi de l'année. Cela signifie que le 31 décembre 2012 appartient à la première semaine de 2013.

Solution dans différents langages de programmation

c #

  • python
<code class="language-C#">// 假设一周从星期一开始
// 第 1 周是当年包含星期四的第一周
public static int GetIso8601WeekOfYear(DateTime time)
{
    // 通过移动到同一周的星期四、星期五或星期六来处理星期一、星期二或星期三
    DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
    if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
    {
        time = time.AddDays(3 - (int)day);
    }
    // 现在,我们知道这一周的星期四在这一周内,我们可以计算周数
    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}</code>
Copier après la connexion
<code class="language-python">import datetime

def get_iso_week_number(date):
  """
  获取日期的 ISO 8601 周数。

  :param date: 要获取周数的日期。
  :type date: datetime.datetime

  :return: ISO 8601 周数。
  :rtype: int
  """
  year, week, _ = date.isocalendar()
  return week</code>
Copier après la connexion
    En comparant la norme ISO 8601, ces solutions peuvent revenir avec précision à la première semaine le 31 décembre 2012, assurant ainsi la semaine correcte de toute date donnée.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal