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");
}
}
}
}
}