6.11.2025

Hafta numarasının hesaplanmasında yanlışlık

Daha önce yılın kaçıncı haftasında olduğumuzu gösteren

Get-Date -UFormat %V

komutu hakkında bir yazı yazmıştım

Bu sene 1 Ocak Çarşamba gününe denk geldi. Türkiye'de bu hafta yılın ilk haftası olarak kabul ediliyor. 6 Ocak Pazartesi günü de yılın ikinci haftası olarak kabul edilmeliydi. Ancak

Get-Date "2025-01-06" -UFormat %V

komutu bu tarih için 2 dönüyorken bir gün sonra 7 Ocak Salı günü için aşağıdaki komut

Get-Date "2025-01-07" -UFormat %V

2 dönüyor. ABD'ye kıyasla Türkiye'de haftanın ilk günü Pazartesi günü kabul ediliyor. Ayrıca yılın ilk haftasının hangi gün başlayacağı ile ilgili de farklı fikirler var. Örneğin 1 Ocak'ın Pazar gününe denk gelmesi durumunda yılın ilk haftası 2 Ocak'ta başlıyor olarak kabul edilebilyor. Bu durumda en az 4 güne sahip bir haftanın yılın ilk haftası kabul edilmesi gertiği yönünde bazı standartlar (IS-8601) oluşmuş. Claude.ai'a göre C çalışma zamanı kütüphanesi strftime, bu hatalardan sorumlu.

Çözüm olarak şöyle bir fonksiyon oluşturulması ve bunun kullanılması önerilmiş.

function Get-ISOWeekNumber {
    param([DateTime]$Date = (Get-Date))
   
    $cal = [System.Globalization.CultureInfo]::InvariantCulture.Calendar
    return $cal.GetWeekOfYear($Date, [System.Globalization.CalendarWeekRule]::FirstFourDayWeek, [DayOfWeek]::Monday)
}