| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace CallCenter.Utility.Time
- {
- public class DateTools
- {
- /// <summary>
- /// 得到本周第一天(以星期天为第一天)
- /// </summary>
- /// <param name="datetime"></param>
- /// <returns></returns>
- 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);
- }
- /// <summary>
- /// 得到本周第一天(以星期一为第一天)
- /// </summary>
- /// <param name="datetime"></param>
- /// <returns></returns>
- 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);
- }
- /// <summary>
- /// 得到本周最后一天(以星期六为最后一天)
- /// </summary>
- /// <param name="datetime"></param>
- /// <returns></returns>
- 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);
- }
- /// <summary>
- /// 得到本周最后一天(以星期天为最后一天)
- /// </summary>
- /// <param name="datetime"></param>
- /// <returns></returns>
- 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);
- }
- /// <summary>
- /// 取得某月的第一天
- /// </summary>
- /// <param name="datetime">要取得月份第一天的时间</param>
- /// <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="datetime">要取得上个月第一天的当前时间</param>
- /// <returns></returns>
- public static DateTime FirstDayOfPreviousMonth(DateTime datetime)
- {
- return datetime.AddDays(1 - datetime.Day).AddMonths(-1);
- }
-
- /// <summary>
- /// 取得上个月的最后一天
- /// </summary>
- /// <param name="datetime">要取得上个月最后一天的当前时间</param>
- /// <returns></returns>
- public static DateTime LastDayOfPrdviousMonth(DateTime datetime)
- {
- return datetime.AddDays(1 - datetime.Day).AddDays(-1);
- }
- /// <summary>
- /// 获取当天、本周、本月、本年、累计时间
- /// </summary>
- /// <param name="datetype"></param>
- /// <param name="date">指定日期</param>
- /// <param name="outtype">输出格式,1带时间,0不带时间</param>
- /// <param name="start"></param>
- /// <param name="end"></param>
- 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");
- }
- }
- }
- }
- }
|