C#根據當前時間確定日期範圍(本週、本月、本季度、本年度)

iDotNetSpace發表於2009-12-03
C#根據當前時間確定日期範圍(本週、本月、本季度、本年度)
2009-10-04 10:46

在C#的開發當中經常遇到關於一個日期時間"+/-"一段時間的問題,下面是一些相關總結,供大家參考.

DateTime dt = DateTime.Now; //當前時間

DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d"))); //本週週一
DateTime endWeek = startWeek.AddDays(6); //本週週日

DateTime startMonth = dt.AddDays(1 - dt.Day); //本月月初
DateTime endMonth = startMonth.AddMonths(1).AddDays(-1); //本月月末
//DateTime endMonth = startMonth.AddDays((dt.AddMonths(1) - dt).Days - 1); //本月月末

DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day); //本季度初
DateTime endQuarter = startQuarter.AddMonths(3).AddDays(-1); //本季度末

DateTime startYear = new DateTime(dt.Year, 1, 1); //本年年初
DateTime endYear = new DateTime(dt.Year, 12, 31); //本年年末

=============================

///


/// 計算本週起始日期(禮拜一的日期)
///

/// 該週中任意一天
/// 返回禮拜一日期,後面的具體時、分、秒和傳入值相等
public static DateTime CalculateFirstDateOfWeek(DateTime someDate)
{
    int i = someDate.DayOfWeek - DayOfWeek.Monday;
    if (i == -1) i = 6;// i值 > = 0 ,因為列舉原因,Sunday排在最前,此時Sunday-Monday=-1,必須+7=6。
    TimeSpan ts = new TimeSpan(i, 0, 0, 0);
    return someDate.Subtract(ts);
}

///


/// 計算本週結束日期(禮拜日的日期)
///

/// 該週中任意一天
/// 返回禮拜日日期,後面的具體時、分、秒和傳入值相等
public static DateTime CalculateLastDateOfWeek(DateTime someDate)
{
    int i = someDate.DayOfWeek - DayOfWeek.Sunday;
    if(i != 0) i = 7 - i;// 因為列舉原因,Sunday排在最前,相減間隔要被7減。
    TimeSpan ts = new TimeSpan(i, 0, 0, 0);
    return someDate.Add(ts);
}

///


/// 判斷選擇的日期是否是本週(根據系統當前時間決定的‘本週’比較而言)
///

///
///
public static bool IsThisWeek(DateTime someDate)
{
    //得到someDate對應的週一
    DateTime someMon = CalculateFirstDateOfWeek(someDate);
    //得到本週一
    DateTime nowMon = CalculateFirstDateOfWeek(DateTime.Now);

    TimeSpan ts = someMon - nowMon;
    if (ts.Days < 0)
        ts = -ts;//取正
    if (ts.Days >= 7)
    {
        return false;
    }
    else
    {
        return true;
    }
}

轉自:http://hi.baidu.com/xiaoheilong/blog/item/14cc8b0215329f054bfb5187.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-621547/,如需轉載,請註明出處,否則將追究法律責任。

相關文章