两个时间差,如2006-12-17,2007-10-12,怎么计算返回9月25天。
你这规则说的不清楚。。。
就是输入2个时间段,如2006-12-17,2007-10-12,然后求相差几月几天。
@泡沫_之夏: 就楼上说的,你这月怎么来的根本都没说清楚。。。
@顾晓北: 就是要这种的结果,
@泡沫_之夏: 怎样的结果?你说说算法啊,楼上说的,你一个月算三十天?那楼上得到的天数除以30就行了嘛。。。
@顾晓北: 就是选择2个时间段,然后求这2个时间段相隔几月几天,月数不定啊,有的是30天有的是31天啊。
这种效果的,会吗?
@泡沫_之夏: 那不就是你的规则自己都没说清嘛。。。如果遇到你说的,你怎么得到的9月25天???你这9月怎么计算的?25天又是怎么计算的?
@顾晓北: 就是问你啊,这个要怎么计算的出来?
@泡沫_之夏: 2006年12月 剩余14天+中间相隔9个月+2007年10月份过去的11天=299天
@泡沫_之夏: 我靠,我哪儿知道你怎么计算出来的???
9月25天怎么计算?一个月算30天?
这个是返回总天数啊。我要返回几月几天。看别人的软件有这个功能。
9月30号到10月1号算相隔一个月吗 ?
根据你的需求,我们需要实现一个简单的减法运算,当日相减不够时,需要向月借位,当月相减不够时,需要向年借位,设计算法如下:
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的值交换计算。
你好 根据你发的图片 应该是先用年份相减得出一年
然后月份相减 得负数所以从年份上借一当12(月份到年份是12进制的)所以是22月-12月=10月
然后就是10个月零12天-17天
这个时候12-17得负数 所以从月份上借一当30
所以是9月25(42-17)天
这个你完全可以自己计算的,vs有相应的类,哪一天的哪一个月有多少天vs都有类帮你计算的,你按照初始时间一直完后累加就是到了