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

  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007
  • SuppressedStorm

    SuppressedSt

    11 AĞUSTOS 2013