求一函数,用c#或sql2005实现,将每个月作为30天计算时间差
类似于DAYS360(Start,End,TRUE)

解决方案 »

  1.   

    用C#的话,datetime.now的话 getmonth的话,应该就好了吧?获得月份,然后再获取月份的天数  然后天数 减去三十的绝对值+1就好了吧?
      

  2.   

    这个我说个思路
    你先判断这两个日期之间月的间隔m
    然后再把小日期加上这个间隔减去第二日期d
    m*30+d
      

  3.   

    还是1天,
    10月31日到11月1日,10月30日到11月1号都只有1天
    相当于excel的days360(),我试过这些数字
      

  4.   


    public int GetDays(DateTime d1, DateTime d2)
            {
                int m = d2.Month - d1.Month;
                int d = d2.Day - d1.Day;
                return m * 30 + d;
            }没有考虑跨年的情况
      

  5.   


    public int GetDays(DateTime d1, DateTime d2)
            {
                int m = d2.Month - d1.Month;
                int d = d2.Day - d1.Day;
                return m * 30 + d;
            }没有考虑跨年的情况
      

  6.   


    public int GetDays(DateTime d1, DateTime d2)
            {
                if ((d2 - d1).TotalDays == 1)
                    return 1;
                int m = d2.Month - d1.Month;
                int d = d2.Day - d1.Day;            return m * 30 + d;
            }
      

  7.   

    用freeboy827的,非常好.然后我把年也加上了
     public int GetDays(DateTime d1, DateTime d2)
            {
                if ((d2 - d1).TotalDays == 1)
                    return 1;
                int y = d2.Year - d1.Year;
                int m = d2.Month - d1.Month;
                int d = d2.Day - d1.Day;
                return m * 30 + d + y * 360;
            }
    在网上搜了一下,一些银行就是按照一年360天计算工资的
    结贴.
      

  8.   

    还要的修改一下,否则2月28到3月1号只有1天,
     public int GetDays(DateTime d1, DateTime d2)
            {
                if ((d2 - d1).TotalDays == 1&&d1.Day==31)
                    return 1;
                int y = d2.Year - d1.Year;
                int m = d2.Month - d1.Month;
                int d = d2.Day - d1.Day;
                return m * 30 + d + y * 360;
            }