c#两个时间差返回月数天数

2020-01-17 16:35发布

两个时间差,如2006-12-17,2007-10-12,怎么计算返回9月25天。

标签:
6条回答
在下西门庆
2楼-- · 2020-01-17 17:28

根据你的需求,我们需要实现一个简单的减法运算,当日相减不够时,需要向月借位,当月相减不够时,需要向年借位,设计算法如下:

    class Program
    {
        static void Main(string[] args)
        {
            DateTime dt1 = new DateTime(2006, 12, 17);
            DateTime dt2 = new DateTime(2007, 10, 12);


            int y = 0;
            int m = 0;
            int d = 0;
            //计算天
            if (dt1.Day > dt2.Day)
            {
                //当天不够时 向月份借位 并重置dt2的天数
                d = (dt2 - dt2.AddMonths(-1)).Days + (dt2.Day - dt1.Day);
                dt2 = dt2.AddMonths(-1);
            }
            else
            {
                d = dt2.Day - dt1.Day;
            }

            //计算月
            if (dt1.Month > dt2.Month)
            {
                //当月不够时向年借位 并重置dt2的年数
                m = 12 + dt2.Month - dt1.Month;
                dt2 = dt2.AddYears(-1);
            }
            else
            {
                m = dt2.Month - dt1.Month;
            }
            //计算年
            y = dt2.Year - dt1.Year;

            Console.WriteLine("{0}年{1}月{2}天", y, m, d);
            Console.ReadLine();
        }
    }

最后在说一句,这里需要保证dt2>dt1,如果dt1>dt2时,可以将dt1和dt2的值交换计算。

查看更多
对你真心纯属浪费
3楼-- · 2020-01-17 17:28

这个你完全可以自己计算的,vs有相应的类,哪一天的哪一个月有多少天vs都有类帮你计算的,你按照初始时间一直完后累加就是到了

查看更多
家丑人穷心不美
4楼-- · 2020-01-17 17:36

你好  根据你发的图片  应该是先用年份相减得出一年
然后月份相减 得负数所以从年份上借一当12(月份到年份是12进制的)所以是22月-12月=10月
然后就是10个月零12天-17天
这个时候12-17得负数 所以从月份上借一当30
所以是9月25(42-17)天

查看更多
戒情不戒烟
5楼-- · 2020-01-17 17:37

你这规则说的不清楚。。。

查看更多
一纸荒年 Trace。
6楼-- · 2020-01-17 17:37

9月30号到10月1号算相隔一个月吗 ?

查看更多
乱世女痞
7楼-- · 2020-01-17 17:40

9月25天怎么计算?一个月算30天?

查看更多
登录 后发表回答