当前位置:网站首页>.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; }
}
边栏推荐
- 4 - "PyTorch Deep Learning Practice" - Backpropagation
- 【软件测试】常用ADB命令
- The role of the annotation @ EnableAutoConfiguration and how to use
- 容联云发送短信验证码
- Pytorch分布式训练/多卡/多GPU训练DDP的torch.distributed.launch和torchrun
- [QNX Hypervisor 2.2用户手册]10.4 vdev hpet
- 七牛云图片上传
- Laravel 实现redis分布式锁
- 加解密在线工具和进制转化在线工具
- 美团二面:Redis与MySQL双写一致性如何保证?
猜你喜欢
小黑leetcode冲浪:94. 二叉树的中序遍历
小黑leetcode之旅:95. 至少有 K 个重复字符的最长子串
NebulaGraph v3.2.0 Release Note,对查询最短路径的性能等多处优化
为何越来越多人选择进入软件测试行业?深度剖析软件测试的优势...
Basic web in PLSQL
How to burn the KT148A voice chip into the chip through the serial port and the tools on the computer
堪称奔驰“理财产品”,空间媲美宝马X5,采用了非常运动的外观
Security software Avast and Symantec NortonLifeLock merge with UK approval, market value soars 43%
【七夕快乐篇】Nacos是如何实现服务注册功能的?
KT6368A Bluetooth certification problem_FCC and BQB_CE_KC certification or other instructions
随机推荐
Security software Avast and Symantec NortonLifeLock merge with UK approval, market value soars 43%
3年,从3K涨薪到20k?真是麻雀啄了牛屁股 — 雀食牛逼呀
kernel hung_task死锁检测机制原理实现
功耗控制之DVFS介绍
Develop a SpaceX website based on the Appian low-code platform
游戏3D建模入门,有哪些建模软件可以选择?
入门3D游戏建模师知识必备
统计单词(DAY 101)华中科技大学考研机试题
Some thoughts on writing
Kernel函数解析之kernel_restart
资深游戏建模师告知新手,游戏场景建模师必备软件有哪些?
什么是次世代建模(附学习资料)
隐私计算综述
KT148A语音芯片怎么烧录语音进入芯片里面通过串口和电脑端的工具
2022年华数杯数学建模
Day118.尚医通:订单列表、详情、支付
测试技术:关于上下文驱动测试的总结
【七夕情人节特效】-- canvas实现满屏爱心
MySQL增删改查基础
Privacy Computing Overview