当前位置:网站首页>.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; }
}
边栏推荐
- 一点点读懂regulator(二)
- Day118. Shangyitong: order list, details, payment
- 未上市就“一举成名”,空间媲美途昂,安全、舒适一个不落
- MySQL基础篇【子查询】
- jenkins发送邮件系统配置
- Pytorch分布式训练/多卡/多GPU训练DDP的torch.distributed.launch和torchrun
- 注解@EnableAutoConfiguration的作用以及如何使用
- 怎么将自己新文章自动推送给自己的粉丝(巨简单,学不会来打我)
- Ab3d.PowerToys and Ab3d.DXEngine Crack
- Since a new byte of 20K came out, I have seen what the ceiling is
猜你喜欢

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

资深游戏建模师告知新手,游戏场景建模师必备软件有哪些?

Day118. Shangyitong: order list, details, payment

Nuclei (2) Advanced - In-depth understanding of workflows, Matchers and Extractors

4-《PyTorch深度学习实践》-反向传播

How to burn the KT148A voice chip into the chip through the serial port and the tools on the computer

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

深度|医疗行业勒索病毒防治解决方案

应用联合、体系化推进。集团型化工企业数字化转型路径

Basic web in PLSQL
随机推荐
mysql基础
Cython
Implementing class target method exception using proxy object execution
Go 语言快速入门指南:什么是 TSL 安全传输层
2022牛客暑期多校训练营5(BCDFGHK)
入门3D游戏建模师知识必备
手写分布式配置中心(1)
Xiaohei's leetcode journey: 95. Longest substring with at least K repeating characters
学会反射后,我被录取了(干货)
[QNX Hypervisor 2.2用户手册]10.4 vdev hpet
Nuclei (2) Advanced - In-depth understanding of workflows, Matchers and Extractors
Kernel函数解析之kernel_restart
三、实战---爬取百度指定词条所对应的结果页面(一个简单的页面采集器)
大师教你3D实时角色制作流程,游戏建模流程分享
建模师经验分享:模型学习方法
uniapp动态实现滑动导航效果demo(整理)
The Go Programming Language (Introduction)
【软件测试】常用ADB命令
没有这些「伪需求」,产品经理的 KPI 怎么完成?
[Cultivation of internal skills of string functions] strcpy + strcat + strcmp (1)