SORU
19 Mart 2009, PERŞEMBE


Hafta sayısını hesaplamak tarih

Herkes haftanın ilk günü (Pazartesi burada Avrupa) almak için kolay bir yol biliyorum. Yıl ve hafta numarasını biliyorum? C bunu yapmak için gidiyorum#.

Şimdiden teşekkürler.

CEVAP
30 Ocak 2012, PAZARTESİ


@@RobinAndersson düzeltmeyi bile HenkHolterman tarafından çözümü ile ilgili sorunlar vardı.

ISO 8601 standardı okuma güzelce sorunu giderir. Hedef olarak ilk Perşembe kullanın ve Pazartesi değil. Aşağıdaki kod 2009 53 Hafta için de çalışır.

public static DateTime FirstDateOfWeekISO8601(int year, int weekOfYear)
{
    DateTime jan1 = new DateTime(year, 1, 1);
    int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek;

    DateTime firstThursday = jan1.AddDays(daysOffset);
    var cal = CultureInfo.CurrentCulture.Calendar;
    int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

    var weekNum = weekOfYear;
    if (firstWeek <= 1)
    {
        weekNum -= 1;
    }
    var result = firstThursday.AddDays(weekNum * 7);
    return result.AddDays(-3);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • natescamp

    natescamp

    30 NİSAN 2009
  • pucksz

    pucksz

    24 Mart 2006