C# 判斷兩個日期是否在同一周

public static class DateTimeExtension
{
    public const DayOfWeek TheFirstDayOfWeek = DayOfWeek.Monday;

    private static int GetDayOfWeek(this DateTime date, DayOfWeek theFirstDayOfWeek = TheFirstDayOfWeek)
    {
        return ((int)date.DayOfWeek - (int)theFirstDayOfWeek + 7) % 7;
    }

    public static bool IsInSameWeek(this DateTime firstDate, DateTime secondDate,
        DayOfWeek theFirstDayOfWeek = TheFirstDayOfWeek)
    {
        var daySpan = (secondDate.Date - firstDate.Date).TotalDays;
        if (daySpan >= 7d || daySpan <= -7d)
        {
            return false;
        }

        var fisrtDayOfWeek = firstDate.GetDayOfWeek(theFirstDayOfWeek);
        var secondDayOfWeek = secondDate.GetDayOfWeek(theFirstDayOfWeek);

        return (daySpan >= 0) ^ (fisrtDayOfWeek >= secondDayOfWeek);
    }

    public static bool IsLastWeek(this DateTime date, DayOfWeek theFirstDayOfWeek = TheFirstDayOfWeek)
    {
        return date.AddDays(7).IsInSameWeek(DateTime.Today, theFirstDayOfWeek);
    }

    public static bool IsThisWeek(this DateTime date, DayOfWeek theFirstDayOfWeek = TheFirstDayOfWeek)
    {
        return date.IsInSameWeek(DateTime.Today, theFirstDayOfWeek);
    }
}

 

//日期轉DataTime

Convert.ToDateTime("2018-12-11")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章