using System; using System.Globalization; namespace GDZZ.Core; /// /// DateTime扩展 /// public static partial class Extensions { /// /// 得到问好 /// /// public static string GetSayHello(this DateTime dateTime) { var hour = DateTime.Now.Hour; return hour switch { < 6 => "凌晨好!", < 9 => "早上好!", < 12 => "上午好!", < 14 => "中午好!", < 17 => "下午好!", < 19 => "傍晚好!", < 22 => "晚上好!", _ => "夜里好!" }; } /// /// 获取指定年月的第一天 /// /// /// /// /// public static DateTime GetCurMonthFirstDay(this DateTime dateTime, string year, string mon) { var AssemblyDate = Convert.ToDateTime(year + "-" + mon + "-" + "01"); // 组装当前指定月份 var result = AssemblyDate.AddDays(1 - AssemblyDate.Day); // 返回指定当前月份的第一天 return new DateTime(result.Year, result.Month, result.Day, 0, 0, 0); } /// /// 获取指定年月的第一天 /// /// /// /// /// public static DateTime GetCurMonthFirstDay(this DateTime dateTime, int year, int mon) { var AssemblyDate = Convert.ToDateTime(year + "-" + mon + "-" + "01"); // 组装当前指定月份 var result = AssemblyDate.AddDays(1 - AssemblyDate.Day); // 返回指定当前月份的第一天 return new DateTime(result.Year, result.Month, result.Day, 0, 0, 0); } /// /// 获取指定年月的最后一天 /// /// /// /// /// public static DateTime GetCurMonthLastDay(this DateTime dateTime, string year, string mon) { var AssemblyDate = Convert.ToDateTime(year + "-" + mon + "-" + "01"); // 组装当前指定月份 var result = AssemblyDate.AddDays(1 - AssemblyDate.Day).AddMonths(1).AddDays(-1); // 返回指定当前月份的最后一天 return new DateTime(result.Year, result.Month, result.Day, 23, 59, 59); } /// /// 获取指定年月的最后一天 /// /// /// /// /// public static DateTime GetCurMonthLastDay(this DateTime dateTime, int year, int mon) { var AssemblyDate = Convert.ToDateTime(year + "-" + mon + "-" + "01"); // 组装当前指定月份 var result = AssemblyDate.AddDays(1 - AssemblyDate.Day).AddMonths(1).AddDays(-1); // 返回指定当前月份的最后一天 return new DateTime(result.Year, result.Month, result.Day, 23, 59, 59); } /// /// 获取当前月的第一天 /// /// /// public static DateTime GetCurMonthFirstDay(this DateTime dateTime) { // 第一种写法 //DateTime CurDate =Convert.ToDateTime(DateTime.Now.ToString()); // 组装当前指定月份 //return CurDate.AddDays(1 - CurDate.Day); // 返回指定当前月份的第一天 // 第二种写法 var nowDate = DateTime.Now; return new DateTime(nowDate.Year, nowDate.Month, 1, 0, 0, 0); // 该方法可以指定,年、月、日 } /// /// 获取当前月的最后一天 /// /// /// public static DateTime GetCurMonthLastDay(this DateTime dateTime) { var CurDate = Convert.ToDateTime(DateTime.Now.ToString(CultureInfo.InvariantCulture)); // 组装当前指定月份 var result = CurDate.AddDays(1 - CurDate.Day).AddMonths(1).AddDays(-1); // 返回指定当前月份的最后一天 return new DateTime(result.Year, result.Month, result.Day, 23, 59, 59); } /// /// 获取上月的第一天 /// /// /// public static DateTime GetUpMonthFirstDay(this DateTime dateTime) { var nowDate = DateTime.Now.AddMonths(-1); return new DateTime(nowDate.Year, nowDate.Month, 1, 0, 0, 0); // 该方法可以指定,年、月、日 } /// /// 获取上月的最后一天 /// /// /// public static DateTime GetUpMonthLastDay(this DateTime dateTime) { var CurDate = Convert.ToDateTime(DateTime.Now.ToString(CultureInfo.InvariantCulture)); // 组装当前指定月份 var result = CurDate.AddDays(1 - CurDate.Day).AddDays(-1); // 返回指定上月份的最后一天 return new DateTime(result.Year, result.Month, result.Day, 23, 59, 59); } /// /// 获取本周时间 /// /// /// public static (DateTime startTime, DateTime lastTime) GetCurWeekDay(this DateTime dateTime) { var startTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1); var lastTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) + 1); return (new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0), new DateTime(lastTime.Year, lastTime.Month, lastTime.Day, 23, 59, 59)); } /// /// 获取上周时间 /// /// /// public static (DateTime startTime, DateTime lastTime) GetUpWeekDay(this DateTime dateTime) { var startTime = DateTime.Now.AddDays(0 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6); var lastTime = DateTime.Now.AddDays(6 - Convert.ToInt16(DateTime.Now.DayOfWeek) - 6); return (new DateTime(startTime.Year, startTime.Month, startTime.Day, 0, 0, 0), new DateTime(lastTime.Year, lastTime.Month, lastTime.Day, 23, 59, 59)); } /// /// 获取当天时间 /// /// /// public static (DateTime startTime, DateTime lastTime) GetCurDay(this DateTime dateTime) { var dt = DateTime.Now; return (new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0), new DateTime(dt.Year, dt.Month, dt.Day, 23, 59, 59)); } /// /// 获取昨天时间 /// /// /// public static (DateTime startTime, DateTime lastTime) GetUpDay(this DateTime dateTime) { var dt = DateTime.Now.AddDays(-1); return (new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0), new DateTime(dt.Year, dt.Month, dt.Day, 23, 59, 59)); } /// /// 计算两个时间的差 /// /// /// /// /// public static int DateDiff(this DateTime dateTime, DateTime startTime, DateTime lastTime) { var start = Convert.ToDateTime(startTime.ToShortDateString()); var end = Convert.ToDateTime(lastTime.ToShortDateString()); var sp = end.Subtract(start); return sp.Days; } }