using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CallCenter.Utility.Time { public class DateTools { /// /// 得到本周第一天(以星期天为第一天) /// /// /// public static DateTime GetWeekFirstDaySun(DateTime datetime) { //星期天为第一天 int weeknow = Convert.ToInt32(datetime.DayOfWeek); int daydiff = (-1) * weeknow; //本周第一天 string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd"); return Convert.ToDateTime(FirstDay); } /// /// 得到本周第一天(以星期一为第一天) /// /// /// public static DateTime GetWeekFirstDayMon(DateTime datetime) { //星期一为第一天 int weeknow = Convert.ToInt32(datetime.DayOfWeek); //因为是以星期一为第一天,所以要判断weeknow等于0时,要向前推6天。 weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1)); int daydiff = (-1) * weeknow; //本周第一天 string FirstDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd"); return Convert.ToDateTime(FirstDay); } /// /// 得到本周最后一天(以星期六为最后一天) /// /// /// public static DateTime GetWeekLastDaySat(DateTime datetime) { //星期六为最后一天 int weeknow = Convert.ToInt32(datetime.DayOfWeek); int daydiff = (7 - weeknow) - 1; //本周最后一天 string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd"); return Convert.ToDateTime(LastDay); } /// /// 得到本周最后一天(以星期天为最后一天) /// /// /// public static DateTime GetWeekLastDaySun(DateTime datetime) { //星期天为最后一天 int weeknow = Convert.ToInt32(datetime.DayOfWeek); weeknow = (weeknow == 0 ? 7 : weeknow); int daydiff = (7 - weeknow); //本周最后一天 string LastDay = datetime.AddDays(daydiff).ToString("yyyy-MM-dd"); return Convert.ToDateTime(LastDay); } /// /// 取得某月的第一天 /// /// 要取得月份第一天的时间 /// public static DateTime FirstDayOfMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day); } /// /// 取得某月的最后一天 /// /// 要取得月份最后一天的时间 /// public static DateTime LastDayOfMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1); } /// /// 取得上个月第一天 /// /// 要取得上个月第一天的当前时间 /// public static DateTime FirstDayOfPreviousMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day).AddMonths(-1); } /// /// 取得上个月的最后一天 /// /// 要取得上个月最后一天的当前时间 /// public static DateTime LastDayOfPrdviousMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day).AddDays(-1); } /// /// 获取当天、本周、本月、本年、累计时间 /// /// /// 指定日期 /// 输出格式,1带时间,0不带时间 /// /// public static void GetStartEndTime(int datetype,string date,int outtype, out string start, out string end) { start = string.Empty; end = string.Empty; var datenow = DateTime.Parse(date); var datestart = datenow; var dateend = datenow; switch (datetype) { case 0://当天 break; case 1://本周 int n = (int)datenow.DayOfWeek == 0 ? 7 : (int)datenow.DayOfWeek; datestart = datenow.AddDays(1 - n);//本周周一 dateend = datestart.AddDays(6);//本周周日 break; case 2://本月 datestart = datenow.AddDays(1 - datenow.Day); //本月月初 dateend = datestart.AddMonths(1).AddDays(-1); //本月月末 break; case 3://本年 datestart = new DateTime(datenow.Year, 1, 1); //本年年初 dateend = new DateTime(datenow.Year, 12, 31); //本年年末 break; case 4://全部 break; default: break; } if (datetype != 4) { if (outtype == 1) { start = datestart.ToString("yyyy-MM-dd") + " 00:00:00"; end = dateend.ToString("yyyy-MM-dd") + " 23:59:59"; } else { start = datestart.ToString("yyyy-MM-dd"); end = dateend.ToString("yyyy-MM-dd"); } } } } }