Rumah > pembangunan bahagian belakang > C++ > Bagaimana cara menentukan bilangan minggu yang tepat?

Bagaimana cara menentukan bilangan minggu yang tepat?

Mary-Kate Olsen
Lepaskan: 2025-01-25 12:21:11
asal
219 orang telah melayarinya

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

dengan tepat mengira nombor mingguan tarikh yang diberikan

Jumlah yang betul dari tarikh yang diberikan mungkin menjadi tugas yang rumit, terutama apabila ia merangkumi dua tahun pada hujung minggu. Ini jelas apabila cuba mencari nombor mingguan 31 Disember 2012. Banyak kaedah standard mengembalikan nilai yang salah 53 dan bukannya 1.

Perbezaan ini terletak pada perbezaan antara nombor mingguan ISO8601 dan nombor mingguan .NET. Walaupun .NET membenarkan minggu untuk menjangkau tahun ini, standard ISO tidak dibenarkan.

ISO 8601 Nombor Minggu

Menurut ISO 8601, minggu pertama tahun ini adalah minggu Khamis pertama tahun itu. Ini bermakna bahawa 31 Disember 2012 tergolong dalam minggu pertama tahun 2013.

Penyelesaian dalam bahasa pengaturcaraan yang berbeza

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>
Salin selepas log masuk
<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>
Salin selepas log masuk
    Dengan membandingkan standard ISO 8601, penyelesaian ini dapat kembali dengan tepat pada minggu pertama pada 31 Disember 2012, dengan itu memastikan minggu yang betul dari mana -mana tarikh yang diberikan.

Atas ialah kandungan terperinci Bagaimana cara menentukan bilangan minggu yang tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan