You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C#计算两个yyyy/MM格式波斯历日期之间的总天数

C# 计算yyyy/MM格式波斯历日期的天数差

核心调整逻辑如下:

  • 输入格式仅包含年、月两个字段,拆分字符串后不需要读取日字段
  • 第一个日期构造时,日参数固定传1,即取对应月份的第一天
  • 第二个日期构造时,调用PersianCalendar.GetDaysInMonth()方法传入对应年、月,获取当前波斯历月份的总天数,作为日参数传入,即可取到对应月份的最后一天
  • 差值计算逻辑和原有完整日期的计算逻辑一致

完整实现代码

string[] dArr1 = date1.Split('/');
string[] dArr2 = date2.Split('/');

PersianCalendar pc = new PersianCalendar();
// 第一个日期取当月第一天
DateTime d1 = new DateTime(Convert.ToInt32(dArr1[0]), Convert.ToInt32(dArr1[1]), 1, pc);
int year2 = Convert.ToInt32(dArr2[0]);
int month2 = Convert.ToInt32(dArr2[1]);
// 第二个日期取当月最后一天
int lastDayOfMonth2 = pc.GetDaysInMonth(year2, month2);
DateTime d2 = new DateTime(year2, month2, lastDayOfMonth2, pc);

TimeSpan diff = d2.Subtract(d1);
int dDiff = Convert.ToInt32(diff.TotalDays);
return dDiff;

可选优化

如果需要提升代码健壮性,可新增输入校验逻辑,判断拆分后的数组长度是否为2、转换的年月数值是否在合法范围内,避免抛出异常。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:24:02