计算两个日期间相差天数

今天要实现计算距某年某月某日还有多少天(距高考还有多少天),最后搞了半天写了两个方法。
  1 /**/ /************************
  2//两个时间相减
  3//小数减大数会出现负数
  4//************************/
    
  5 protected   void  Button2_Click( object  sender, EventArgs e)
  6      {
  7        DateTime d1 = new DateTime(200867);
  8        DateTime d2 = new DateTime(20071115);
  9        string d3 = Convert.ToString(d1 - d2);//d3的值为 205.00:00:00 
 10
 11        string[] str = d3.Split('.');//截取整数为相差天数
 12        d3 = str[0];
 13        Response.Write(d3);
 14       
 15    }

 16
 17 /**/ /***************************************
 18//以结束时间为基数,例如高考时间(6-7).
 19//分了三种情况:
 20//小于6,大于6,等于6
 21//***************************************/

 22
 23   private   void  CountDays()
 24      {
 25
 26        /**//*计算距某年某月某日还有多少天(距高考还有多少天)
 27         * nextYear int 高考年份
 28         * days int 剩余天数
 29         * */

 30        int nowYear = DateTime.Now.Year;
 31        int nowMonth = DateTime.Now.Month;
 32        int nowDay = DateTime.Now.Day;
 33
 34        if (nowMonth > 6)//大于六月,则为下一年(nowYear+1)
 35        {
 36            //是否为闰年
 37            if (DateTime.IsLeapYear(nowYear))
 38            {
 39                nextYear = nowYear + 1;
 40                int days1 = 366 - DateTime.Now.DayOfYear;
 41                DateTime dt = new DateTime(nowYear + 167);
 42                int days2 = dt.DayOfYear;
 43                days = days1 + days2;
 44            }

 45            else
 46            {
 47                nextYear = nowYear + 1;
 48                int days1 = 365 - DateTime.Now.DayOfYear;
 49                DateTime dt = new DateTime(nowYear + 167);
 50                int days2 = dt.DayOfYear;
 51                days = days1 + days2;
 52            }

 53        }

 54
 55        else if (nowMonth < 6)//小于六月,则为今年(nowYear)
 56        {
 57            //是否为闰年
 58            if (DateTime.IsLeapYear(nowYear))
 59            {
 60                nextYear = nowYear;
 61                int days1 = 366 - DateTime.Now.DayOfYear;
 62
 63                days = days1;
 64            }

 65            else
 66            {
 67                nextYear = nowYear;
 68                int days1 = 365 - DateTime.Now.DayOfYear;
 69
 70                days = days1;
 71            }

 72        }

 73        else if (nowMonth == 6)//等于六月,再判断日。
 74        {
 75            if (nowDay > 6)
 76            {
 77                //是否为闰年
 78                if (DateTime.IsLeapYear(nowYear))
 79                {
 80                    nextYear = nowYear + 1;
 81                    int days1 = 366 - DateTime.Now.DayOfYear;
 82                    DateTime dt = new DateTime(nowYear + 167);
 83                    int days2 = dt.DayOfYear;
 84                    days = days1 + days2;
 85                }

 86                else
 87                {
 88                    nextYear = nowYear + 1;
 89                    int days1 = 365 - DateTime.Now.DayOfYear;
 90                    DateTime dt = new DateTime(nowYear + 167);
 91                    int days2 = dt.DayOfYear;
 92                    days = days1 + days2;
 93                }

 94            }

 95            else if (nowDay < 6)
 96            {
 97                if (DateTime.IsLeapYear(nowYear))
 98                {
 99                    nextYear = nowYear;
100                    int days1 = 366 - DateTime.Now.DayOfYear;
101
102                    days = days1;
103                }

104                else
105                {
106                    nextYear = nowYear;
107                    int days1 = 365 - DateTime.Now.DayOfYear;
108
109                    days = days1;
110                }

111            }

112            else if (nowDay == 6)
113            {
114                days = 0;
115            }

116        }

117
118    }

1.上面两个函数都可以改为带参数的函数。
2.上面两个函数结果一样——205,不过没有验证。
3.感觉写的很不好,得优化。时间太紧了,只好先这样啦。
4.回头好好搞搞时间问题,时间转换怎么也转不过来。

转载于:https://www.cnblogs.com/htht66/archive/2007/11/15/960788.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值