簡體   English   中英

在C#中獲取給定星期數的星期五

[英]Get Friday for the given week number in C#

我需要找到前一年(第37周)的給定星期幾的星期五日期。

(2011年的第一個星期五是1月1日這一周的星期五。在這種情況下,第一個星期五是2010年12月31日。)

DateTime.Parse("12/31/2010").AddDays(36 * 7);

編輯:我添加了更多的東西,您可能想要更多,這里我生成日期列表,然后您可以使用LINQ輕松獲得所需的內容。

    public void DateThing()
    {
        List<DateTime> dateList = new List<DateTime>();
        DateTime start = DateTime.Parse("1/1/2010");

        for (int i = 0; i < 1000; i++)
        {
            dateList.Add(start.AddDays(i));
        }

        var dateYouWant = GetDayOfWeekForGivenYear(DayOfWeek.Friday, 37, 2011, dateList);
    }

    private DateTime GetDayOfWeekForGivenYear(DayOfWeek dayOfWeek, int weekNum, int year, List<DateTime> dateList)
    {
        var days = dateList.Where(w => w.Year == year  && w.DayOfWeek == dayOfWeek);
        var day = days.FirstOrDefault(w => w.DayOfYear >= (weekNum - 1) * 7);

        if (weekNum == 1)
        {
            return day.DayOfYear > (int)day.DayOfWeek ? day.AddDays(-7) : day;
        }
        else if (weekNum == 53 && day == default(DateTime))
        {
            return days.Last(w => w.DayOfWeek == dayOfWeek).AddDays(7);
        }

        return day;
    }

嘗試這樣的事情...

    var year = 2011;
    var week = 37;
    var date = new DateTime(year, 1, 1);

    while (date.DayOfWeek != DayOfWeek.Friday) date.AddDays(1); 

    date = date.AddDays(7 * (week - 1));

假設一年的第一個星期是第一個星期五的星期。 情況並非總是如此……您可能希望將一年的第一周作為第一整周..或第一部分的周...根據需要進行調整。 希望這可以幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM