Heim > Backend-Entwicklung > C++ > Wie kann ich die Woche eines bestimmten Datums korrekt bestimmen?

Wie kann ich die Woche eines bestimmten Datums korrekt bestimmen?

Mary-Kate Olsen
Freigeben: 2025-01-25 12:21:11
Original
219 Leute haben es durchsucht

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

Berechnen Sie die wöchentliche Anzahl des angegebenen Datums

genau Die korrekte Anzahl des angegebenen Datums kann eine schwierige Aufgabe sein, insbesondere wenn es sich um zwei Jahre am Wochenende erstreckt. Dies ist offensichtlich, wenn Sie versuchen, die wöchentliche Anzahl von 31. Dezember 2012 am 31. Dezember 2012 zu finden. Viele Standardmethoden geben falsche Werte 53 anstelle von 1 zurück.

Dieser Unterschied liegt in der Differenz zwischen der wöchentlichen ISO8601 -Nummer und der Weekly -Nummer .NET. Obwohl die .NET die Woche über das Jahr überdauerte, war der ISO -Standard nicht erlaubt.

ISO 8601 Wochennummer

Nach der ISO 8601 ist die erste Woche des Jahres die Woche des ersten Donnerstags dieses Jahres. Dies bedeutet, dass der 31. Dezember 2012 zur ersten Woche des Jahres 2013 gehört.

Lösung in verschiedenen Programmiersprachen

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>
Nach dem Login kopieren
<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>
Nach dem Login kopieren
    Durch Vergleich des ISO 8601 -Standards können diese Lösungen am 31. Dezember 2012 genau in die erste Woche zurückkehren, wodurch die richtige Woche eines bestimmten Datums gewährleistet ist.

Das obige ist der detaillierte Inhalt vonWie kann ich die Woche eines bestimmten Datums korrekt bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage