How can I get the DateTime for the start of the week?

前端 未结 30 2777
走了就别回头了
走了就别回头了 2020-11-22 12:57

How do I find the start of the week (both Sunday and Monday) knowing just the current time in C#?

Something like:

DateTime.Now.StartWeek(Monday);
         


        
30条回答
  •  说谎
    说谎 (楼主)
    2020-11-22 13:26

    if you want saturday or sunday or any day of week but not exceeding current week(Sat-Sun) I got you covered with this piece of code.

    public static DateTime GetDateInCurrentWeek(this DateTime date, DayOfWeek day)
    {
        var temp = date;
        var limit = (int)date.DayOfWeek;
        var returnDate = DateTime.MinValue;
    
        if (date.DayOfWeek == day) return date;
    
        for (int i = limit; i < 6; i++)
        {
            temp = temp.AddDays(1);
    
            if (day == temp.DayOfWeek)
            {
                returnDate = temp;
                break;
            }
        }
        if (returnDate == DateTime.MinValue)
        {
            for (int i = limit; i > -1; i++)
            {
                date = date.AddDays(-1);
    
                if (day == date.DayOfWeek)
                {
                    returnDate = date;
                    break;
                }
            }
        }
        return returnDate;
    }
    

提交回复
热议问题