如何使用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
相关产品推荐
相关产品推荐

