1. 程式人生 > >C# 自然周,月,季度計算。

C# 自然周,月,季度計算。

        /// <summary>
        /// 判斷時間是否和伺服器時間是一天
        /// </summary>
        /// <param name="cs"></param>
        /// <returns></returns>
        public static bool JudgeTimeIsToDay(DateTime cs)
        {

            DateTime start = Convert.ToDateTime(cs.ToShortDateString());
            DateTime end 
= Convert.ToDateTime(DateTime.Now.ToShortDateString()); TimeSpan sp = end.Subtract(start); return sp.Days == 0; } /// <summary> /// 計算當前季度多少天 /// </summary> /// <returns></returns> public static int DateDiff() { DateTime start
= Convert.ToDateTime(ToFirstDayOfSeason().ToShortDateString()); DateTime end = Convert.ToDateTime(ToLastDayOfSeason().ToShortDateString()); TimeSpan sp = end.Subtract(start); return sp.Days; } /// <summary> /// 計算當前月有多少天 /// </summary>
/// <returns></returns> public static int GetMonthDays() { return System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetDaysInMonth(DateTime.Now.Year, DateTime.Now.Month); } /// <summary> /// 計算本週的週一日期 /// </summary> /// <returns></returns> public static DateTime GetMondayDate() { return GetMondayDate(DateTime.Now); } /// <summary> /// 計算本週週日的日期 /// </summary> /// <returns></returns> public static DateTime GetSundayDate() { return GetSundayDate(DateTime.Now); } /// <summary> /// 獲取本月最後一天 /// </summary> /// <param name="datetime"></param> /// <returns></returns> public static DateTime LastDayOfMonth() { return DateTime.Now.AddDays(1 - DateTime.Now.Day).AddMonths(1).AddDays(-1); } /// <summary> /// 計算本月的第一天 /// </summary> /// <returns></returns> public static DateTime FirstDayOfMonth() { return DateTime.Now.AddDays(1 - DateTime.Now.Day); } /// <summary> /// 獲取該時間所在季度的第一天 /// </summary> /// <returns></returns> public static DateTime ToFirstDayOfSeason() { return ToFirstDayOfSeason(DateTime.Now); } /// <summary> /// 獲取該時間所在季度的最後一天 /// </summary> /// <returns></returns> public static DateTime ToLastDayOfSeason() { return ToLastDayOfSeason(DateTime.Now); } /// <summary> /// 獲取該時間所在季度的第一天 /// </summary> /// <param name="target"></param> /// <returns></returns> public static DateTime ToFirstDayOfSeason(DateTime target) { int ThisMonth = DateTime.Now.Month; int FirstMonthOfSeason = ThisMonth - (ThisMonth % 3 == 0 ? 3 : (ThisMonth % 3)) + 1; target = target.AddMonths(FirstMonthOfSeason - ThisMonth); return Convert.ToDateTime(target.ToString("yyyy-MM-01 HH:mm:ss")); } /// <summary> /// 獲取該時間所在季度的最後一天 /// </summary> /// <param name="target"></param> /// <returns></returns> public static DateTime ToLastDayOfSeason(DateTime target) { int ThisMonth = DateTime.Now.Month; int FirstMonthOfSeason = ThisMonth - (ThisMonth % 3 == 0 ? 3 : (ThisMonth % 3)) + 3; target = target.AddMonths(FirstMonthOfSeason - ThisMonth); return Convert.ToDateTime(target.AddMonths(1).ToString("yyyy-MM-01 HH:mm:ss")).AddDays(-1); } /// <summary> /// 計算本月的第一天 /// </summary> /// <returns></returns> public static DateTime FirstDayOfMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day); } /// <summary> /// 獲取本月最後一天 /// </summary> /// <param name="datetime"></param> /// <returns></returns> public static DateTime LastDayOfMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1); } /// <summary> /// 計算某日起始日期(禮拜一的日期) /// </summary> /// <param name="someDate">該週中任意一天</param> /// <returns>返回禮拜一日期,後面的具體時、分、秒和傳入值相等</returns> public static DateTime GetMondayDate(this 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); } /// <summary> /// 計算某日結束日期(禮拜日的日期) /// </summary> /// <param name="someDate">該週中任意一天</param> /// <returns>返回禮拜日日期,後面的具體時、分、秒和傳入值相等</returns> public static DateTime GetSundayDate(this 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 DateTime GetSundayDate(this DateTime someDate, int hour, int minute, int second) { int i = someDate.DayOfWeek - DayOfWeek.Sunday; if (i != 0) i = 7 - i;// 因為列舉原因,Sunday排在最前,相減間隔要被7減。 TimeSpan ts = new TimeSpan(i, 0, 0, 0); var ret = someDate.Add(ts); ret = ret.AddHours(hour - ret.Hour); ret = ret.AddMinutes(minute - ret.Minute); ret = ret.AddSeconds(second - ret.Second); return ret; }