.net(C#)获取两个日期间隔的年月日

编程入门 行业动态 更新时间:2024-10-25 02:24:03

.net(C#)获取两个日期<a href=https://www.elefans.com/category/jswz/34/1769353.html style=间隔的年月日"/>

.net(C#)获取两个日期间隔的年月日

年份:不满一年,算0年
月份:当前月,1号到月底算1月,2号到次月1号,3号到次月2号,依次类推,算1个月
天数:包含起止日期的天数

        /// <summary>/// /// </summary>/// <param name="MinDate"></param>/// <param name="MaxDate"></param>/// <returns></returns>private static GetDiffDateModel GetDiffDate(DateTime MinDate, DateTime MaxDate){GetDiffDateModel result = new GetDiffDateModel();//只比较年月日MinDate = new DateTime(MinDate.Year, MinDate.Month, MinDate.Day);MaxDate = new DateTime(MaxDate.Year, MaxDate.Month, MaxDate.Day);if (MinDate >= MaxDate){return result;}#region 年#region 案例/*#2022.01.01  2022.12.29 2022.12.31 0#2022.01.01  2022.12.30 2022.12.31 0#2022.01.01  2022.12.31 2022.12.31 1#2022.01.01  2023.12.29 2023.12.31 1#2022.01.01  2023.12.30 2023.12.31 1#2022.01.01  2023.12.31 2023.12.31 2#2022.01.02  2022.12.29 2023.01.01 0#2022.01.02  2022.12.30 2023.01.01 0#2022.01.02  2022.12.31 2023.01.01 0#2022.01.03  2023.01.01 2023.01.02 0#2022.01.03  2023.01.02 2023.01.02 1#2022.01.03  2023.12.31 2023.01.02 1#2022.01.03  2024.01.01 2024.01.02 2*/#endregionvar _year = MaxDate.Year - MinDate.Year;if (MinDate.Month == 1 && MinDate.Day == 1){//如果是当前最后一天,年份+1if (MaxDate == new DateTime(MaxDate.Year, 12, 31)){_year++;}}else{if (_year == 0)//同一年{_year = 0;}else{if (MinDate.AddYears(_year).AddDays(-1) > MaxDate){_year--;}}}result.Year = _year;#endregion#region 月#region 案例/*2022年8月1号~2022年08月30号 2022年08月31号 算0月2022年8月1号~2022年08月31号 2022年08月31号 算1月2022年8月3号~2022年09月01号 2022年09月02号 算0月2022年8月3号~2022年09月02号 2022年09月02号 算1月2022年8月3号~2022年09月30号 2022年09月02号 算1月2022年8月3号~2022年09月31号 2022年09月02号 算1月2022年8月3号~2022年10月01号 2022年10月02号 算1月2022年8月3号~2022年10月02号 2022年10月02号 算2月*/#endregion/*逻辑:先把年的部分去掉,然后比较剩下的月份*/var currMinDate = MinDate.AddYears(result.Year);var _month = MaxDate.Month - currMinDate.Month;if (currMinDate.Day == 1){//如果是当月最后一天,月份+1if (MaxDate.Day == new DateTime(MaxDate.Year, MaxDate.Month, 1).AddMonths(1).AddDays(-1).Day){_month++;}}else{if (_month == 0)//同一月{_month = 0;}else{if (currMinDate.AddMonths(_month).AddDays(-1) > MaxDate){_month--;}}}result.Month = _month + (result.Year * 12);#endregion#region 日result.Day = (MaxDate.Date - MinDate.Date).Days + 1;#endregionreturn result;}public class GetDiffDateModel{public int Year { get; set; }public int Month { get; set; }public int Day { get; set; }}

更多推荐

.net(C#)获取两个日期间隔的年月日

本文发布于:2024-02-05 09:31:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1744550.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:间隔   年月日   两个   日期   net

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!