间隔的年月日"/>
.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#)获取两个日期间隔的年月日
发布评论