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

  • curioustravelers

    curioustrave

    12 AĞUSTOS 2006
  • Kyler Briskey

    Kyler Briske

    20 ŞUBAT 2011
  • Submissions101

    Submissions1

    23 ŞUBAT 2007