当前位置:网站首页>.net (C#) get year month day between two dates
.net (C#) get year month day between two dates
2022-08-04 23:42:00 【walking on the road】
年份:不满一年,算0年
月份:当前月,1The number is calculated by the end of the month1月,2No. to next month1号,3No. to next month2号,依次类推,算1个月
天数:Number of days including start and end dates
/// <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 */
#endregion
var _year = MaxDate.Year - MinDate.Year;
if (MinDate.Month == 1 && MinDate.Day == 1)
{
//If it is the current last day,年份+1
if (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
/* 逻辑:Remove the year part first,Then compare the remaining months */
var currMinDate = MinDate.AddYears(result.Year);
var _month = MaxDate.Month - currMinDate.Month;
if (currMinDate.Day == 1)
{
//If it is the last day of the month,月份+1
if (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;
#endregion
return result;
}
public class GetDiffDateModel
{
public int Year {
get; set; }
public int Month {
get; set; }
public int Day {
get; set; }
}
边栏推荐
猜你喜欢

Flutter启动流程(Skia引擎)介绍与使用

Since a new byte of 20K came out, I have seen what the ceiling is

MySQL增删改查基础

Pytorch分布式训练/多卡/多GPU训练DDP的torch.distributed.launch和torchrun

365天深度学习训练营-学习线路

KT148A语音芯片怎么烧录语音进入芯片里面通过串口和电脑端的工具

三大技巧让你成功入门3D建模,零基础小白必看

【SSR服务端渲染+CSR客户端渲染+post请求+get请求+总结】

建模师经验分享:模型学习方法

MongoDB权限验证开启与mongoose数据库配置
随机推荐
3年,从3K涨薪到20k?真是麻雀啄了牛屁股 — 雀食牛逼呀
话题 | 雾计算和边缘计算有什么区别?
what is MVCC
kernel问题定位手段总结
一点点读懂thermal(一)
Security software Avast and Symantec NortonLifeLock merge with UK approval, market value soars 43%
SQL关联表更新
The Go Programming Language (Introduction)
NebulaGraph v3.2.0 Release Note, many optimizations such as the performance of querying the shortest path
没有这些「伪需求」,产品经理的 KPI 怎么完成?
头脑风暴:完全背包
[Cultivation of internal skills of string functions] strcpy + strcat + strcmp (1)
ClickHouse 二级索引
golang 协程的实现原理
文献阅读十——Detect Rumors on Twitter by Promoting Information Campaigns with Generative Adversarial Learn
Basic web in PLSQL
KT148A语音芯片ic工作原理以及芯片的内部架构描述
The market value of 360 has evaporated by 390 billion in four years. Can government and enterprise security save lives?
DNS常见资源记录类型详解
【七夕情人节特效】-- canvas实现满屏爱心