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; }
出处:https://www.cnblogs.com/linhuiy/p/10218745.html
付费内容,请联系本人QQ:1002453261
本文来自博客园,作者:明志德道,转载请注明原文链接:https://www.cnblogs.com/for-easy-fast/articles/12985327.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析