首页 新闻 会员 周边

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

0
悬赏园豆:10 [已解决问题] 解决于 2020-01-17 17:39

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

泡沫_之夏的主页 泡沫_之夏 | 初学一级 | 园豆:110
提问于:2016-10-17 16:12
< >
分享
最佳答案
0

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

收获园豆:10
顾晓北 | 专家六级 |园豆:10844 | 2016-10-17 16:20

就是输入2个时间段,如2006-12-17,2007-10-12,然后求相差几月几天。

泡沫_之夏 | 园豆:110 (初学一级) | 2016-10-17 16:24

@泡沫_之夏: 就楼上说的,你这月怎么来的根本都没说清楚。。。

顾晓北 | 园豆:10844 (专家六级) | 2016-10-17 16:26

@顾晓北: 就是要这种的结果,

泡沫_之夏 | 园豆:110 (初学一级) | 2016-10-17 16:29

@泡沫_之夏: 怎样的结果?你说说算法啊,楼上说的,你一个月算三十天?那楼上得到的天数除以30就行了嘛。。。

顾晓北 | 园豆:10844 (专家六级) | 2016-10-17 16:30

@顾晓北: 就是选择2个时间段,然后求这2个时间段相隔几月几天,月数不定啊,有的是30天有的是31天啊。

泡沫_之夏 | 园豆:110 (初学一级) | 2016-10-17 16:36

这种效果的,会吗?

泡沫_之夏 | 园豆:110 (初学一级) | 2016-10-17 16:40

@泡沫_之夏: 那不就是你的规则自己都没说清嘛。。。如果遇到你说的,你怎么得到的9月25天???你这9月怎么计算的?25天又是怎么计算的?

顾晓北 | 园豆:10844 (专家六级) | 2016-10-17 16:42

@顾晓北: 就是问你啊,这个要怎么计算的出来?

泡沫_之夏 | 园豆:110 (初学一级) | 2016-10-17 16:47

@泡沫_之夏: 2006年12月 剩余14天+中间相隔9个月+2007年10月份过去的11天=299天

liuxb1991 | 园豆:661 (小虾三级) | 2016-10-17 16:52

@泡沫_之夏: 我靠,我哪儿知道你怎么计算出来的???

顾晓北 | 园豆:10844 (专家六级) | 2016-10-17 16:53
其他回答(5)
0

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

Firen | 园豆:5385 (大侠五级) | 2016-10-17 16:18

这个是返回总天数啊。我要返回几月几天。看别人的软件有这个功能。

支持(0) 反对(0) 泡沫_之夏 | 园豆:110 (初学一级) | 2016-10-17 16:23
0

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

liuxb1991 | 园豆:661 (小虾三级) | 2016-10-17 16:42
0

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

    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的值交换计算。

TeaPet | 园豆:318 (菜鸟二级) | 2016-10-18 14:21
0

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

叶帅辉 | 园豆:277 (菜鸟二级) | 2016-10-20 10:20
0

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

jqw2009 | 园豆:2439 (老鸟四级) | 2017-08-22 14:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册