C#计算天数(星期几)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leonardo_Davinci/article/details/78691903

第一种:给定两个日期计算相隔的天数

例 2017/11/2       2020/3/29

思路:1.得到相隔年的天(包含起始年)  2.减去起始年的的天数(已经过了的) 3.加上当前年的天数(月数和天数)


第二种:给定一个日期,求过了Y 年 M 月  D  天   经过了多少天

例 2017/11/2     3年/14个月/53天/

思路:与第一种相同


第三种:给定一个日期判断是星期几

例 2017/11/2     (这个调用一下时间就行了)


第一种实现:

 public class MainClass
    {
        //起始年的年月日
        int nowYear = 2017;
        int nowMonth = 11;
        int nowDay = 2;
        ////结束年的年月日
        //int lastyear = 2020;
        //int lastMonth = 2;
        //int lastDay = 14;
        //计算总的天数
        int sumDay = 0;
        public static void Main(string[] args)
        {
            MainClass main = new MainClass();
            int data = main.SumData(2017, 12, 2);
            Console.WriteLine(data);
        }
        //计算两个日期相隔多少天
        public int SumData(int year, int month, int day)
        {
            //计算相隔年的天数
            int tempNowYear = nowYear;
            while (tempNowYear < year)
            {
                if (tempNowYear % 4 == 0 && tempNowYear % 100 != 0 || tempNowYear % 400 == 0)
                    sumDay += 366;
                else
                    sumDay += 365;
                tempNowYear++;
            }
            //减去nowYear已经过了的天数
            sumDay -= nowDay;
            int tempNowMonth = nowMonth - 1;
            while (tempNowMonth > 0)
            {
                sumDay -= MonthDay(nowYear, tempNowMonth);
                tempNowMonth--;
            }
            //加上现在的lastYear的过了的天数
            sumDay += day;
            while (month - 1 > 0)
            {
                sumDay += MonthDay(year, month);
                month--;
            }
            return sumDay;
        }
        /// <summary>
        /// 计算平年和闰年月的天数
        /// </summary>
        /// <returns>The day.</returns>
        /// <param name="year"></param>
        /// <param name="month"></param>
        public static int MonthDay(int year, int month)
        {
            int day = 0;
            switch (month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    day = 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    day = 30;
                    break;
                case 2:
                    {
                        if (year % 4 == 0 && year % 100 != 100 || year % 100 == 0 && year % 400 == 0)
                        {
                            day = 29;
                        }
                        else
                            day = 28;
                        break;
                    }
            }
            return day;
        }
    }


第二种实现:

public class MainClass
    {
        //起始年的年月日
        int nowYear = 2017;
        int nowMonth = 11;
        int nowDay = 2;

        //计算总的天数
        int sumDay = 0;
        public static void Main(string[] args)
        {
            MainClass main = new MainClass();
            int k = main.Sumfuture(1, 0, 27);
            Console.WriteLine(k);
        }
        /// <summary>
        /// 计算平年和闰年月的天数
        /// </summary>
        /// <returns>The day.</returns>
        /// <param name="year"></param>
        /// <param name="month"></param>
        public static int MonthDay(int year, int month)
        {
            int day = 0;
            switch (month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    day = 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    day = 30;
                    break;
                case 2:
                    {
                        if (year % 4 == 0 && year % 100 != 100 || year % 100 == 0 && year % 400 == 0)
                        {
                            day = 29;
                        }
                        else
                            day = 28;
                        break;
                    }
            }
            return day;
        }
        /// <summary>
        /// 计算相隔多少天数
        /// </summary>
        /// <returns>The sumfuture.</returns>
        /// <param name="year">Year.</param>
        /// <param name="month">Month.</param>
        /// <param name="day">Day.</param>
        public int Sumfuture(int year, int month, int day)
        {
            //1.求现在的日期,由于月份没有0,因此为了避免出现0,开始计算月数的时候减去一个一,在后面再加上
            /*例  2017/11/2     过了  1 Month
             *    2017/12/2
             *例   2017//11/2   过了   2 month
             *    2018/1/2    
            */
            int tempMonth = (month + nowMonth - 1);
            int tempYear = tempMonth / 12;
            tempMonth = tempMonth % 12 + 1;
            tempYear = tempYear + nowYear + year;
            sumDay += nowDay;
            //隔了多少年的天数
            int tempNowyear = nowYear;
            while (tempNowyear < tempYear)
            {
                if (tempNowyear % 4 == 0 && tempNowyear % 100 != 0 || tempNowyear % 400 == 0)
                    sumDay += 366;
                else
                    sumDay += 365;
                tempNowyear++;
            }
            //如果起始年与结束年在同一年
            if (nowYear < tempYear)
            {
                //减去起始年的月数和天数
                sumDay -= nowDay;
                nowMonth -= 1;
                while (nowMonth > 0)
                {
                    sumDay -= MonthDay(nowYear, nowMonth);
                    nowMonth--;
                }
                //加上之后剩余的月与天数
                sumDay += day;
                tempMonth -= 1;
                while (tempMonth > 0)
                {
                    sumDay += MonthDay(tempYear, tempMonth);
                    tempMonth--;
                }
                return sumDay;
            }
            else
            {
                while (nowMonth < tempMonth)
                {
                    sumDay += MonthDay(nowYear, nowMonth);
                    nowMonth++;
                }
                sumDay -= nowDay;
                sumDay += day;
                return sumDay;
            }
        }
    }




第三种实现:




猜你喜欢

转载自blog.csdn.net/leonardo_Davinci/article/details/78691903
今日推荐