Asp.net C#通过起始日期计算月份差

本文介绍了一种计算两个日期间完整月份数量的方法,并通过具体的C#代码实现了该功能。该方法考虑了不同年份和月份之间的差异,确保只计算完整的月份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以通过穿进去的起始时间,返回月份数;

如果天数不够一个月则不计入统计及0

下面为方法的代码

 
public int GetMonth(DateTime dtbegin,DateTime dtend)
    {
        int Month = 0;
     
      //  DateTime dtbegin = Convert.ToDateTime(txtworkday.Text.ToString()); //起始时间
      //  DateTime dtend = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));  //结束时间

        if ((dtend.Year - dtbegin.Year) == 0)
        {
            if (dtend.Day - dtbegin.Day > 0)
            {
                Month = dtend.Month - dtbegin.Month;
            }
            else
            {
                Month = dtend.Month - dtbegin.Month-1;
            }
            
        }
        if ((dtend.Year - dtbegin.Year) >= 1)
        {
            if (dtend.Month - dtbegin.Month < 0)
            {
                if (dtend.Day - dtbegin.Day > 0)
                {
                    Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month;
                }
                else
                {
                    Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month - 1;
                }
                
            }
            else if ((dtend.Month - dtbegin.Month == 0) && (dtend.Year - dtbegin.Year >= 1))
            {
                if (dtend.Day - dtbegin.Day > 0)
                {
                    Month = (dtend.Year - dtbegin.Year) * 12 ;
                }
                else
                {
                    Month = (dtend.Year - dtbegin.Year) * 12 - 1;
                }
            }
            else if ((dtend.Month - dtbegin.Month > 0) && (dtend.Year - dtbegin.Year >= 1))
            {
                if (dtend.Day - dtbegin.Day > 0)
                {
                    Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month ;
                }
                else
                {
                    Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month - 1;
                }
            }
            else
            {
                if (dtend.Day - dtbegin.Day > 0)
                {
                    Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month + 1;
                }
                else
                {
                    Month = (dtend.Year - dtbegin.Year) * 12 + dtend.Month - dtbegin.Month + 1 - 1;
                }

            }
        }
        return Month;
    }


引用的部分可以这样写成自己想要的

  DateTime workd = DateTime.Parse(txtworkday.Text.ToString());//startdate
                DateTime nowd = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); //enddate
                TimeSpan ts = nowd - workd;
                int getMonth = GetMonth(workd, nowd);
                int yeardiff = getMonth / 12;//系統會用到
                int monthdiff = (getMonth - 12 * yeardiff);//系統會用到
                int daydiff = (nowd.Day - workd.Day);

               


                string timespan = "相差:" + yeardiff.ToString() + "年" + monthdiff.ToString() + "月"
                                   + daydiff.ToString() + "天" + getMonth;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cheug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值