首页 > 代码库 > 取得日期对应的星期数

取得日期对应的星期数

我这个方法有点小取巧,只取1900-01-01年后的数据,之前的的日期需要重新计算一下。

 

1、先取出输入的日期距离1900-01-01的天数

        private static int GetDays(int year, int month, int day)        {            //1900-1-1是星期一            int result = 0;            int[] month31 = {1,3,5,7,8,10,12};            int[] month30 = {4,6,9,11};            const int YEAR = 1900;            const int MONTH = 1;            const int DAY = 1;            //先按整年计算*****************************************            result += (year - YEAR) * 365;            for (int i = YEAR; i < year; i++)            {                if (IsLeapYear(i))                {                    ++result;                }            }                        //计算月份********************************************            if (month > MONTH)            {                for (int i = MONTH; i < month; i++)                {                    if (i == 2 && IsLeapYear(year))                    {                        result += 29;                    }                    else                    {                        result += 28;                    }                    if (month30.Contains(i))                    {                        result += 30;                    }                    if (month31.Contains(i))                    {                        result += 31;                    }                }            }            else            {                //月份相等的情况,不可能有月份小于1,不需要做任何运算,在下面的日计算直接计算即可                            }            //计算日*********************************            result += day - DAY;            return result;        }

2、将天数差对7取余,比如相差1900-01-07和1900-01-01相差7天,那么取余得到0,说明是星期天,

如果是1900-01-08,则取余为1,说明和1900-01-01是同一个星期,即星期一

        /// <summary>        /// 根据天数差获取是星期几        /// </summary>        /// <param name="days">天数差</param>        /// <param name="weekInt">取余后的数</param>        /// <returns></returns>        private static string GetWeekDay(int days,out int weekInt)        {            Dictionary<int, string> weekDic = new Dictionary<int, string>();            weekDic.Add(1, "星期一");            weekDic.Add(2, "星期二");            weekDic.Add(3, "星期三");            weekDic.Add(4, "星期四");            weekDic.Add(5, "星期五");            weekDic.Add(6, "星期六");            weekDic.Add(7, "星期天");            weekInt = days % 7 == 0 ? 7 : days % 7;            return weekDic[weekInt];                    }

3、输出结果

                Console.WriteLine("请输入一个日期:");                string dateStr = Console.ReadLine();                string[] dateArray = dateStr.Split(‘-‘);                int year = int.Parse(dateArray[0]);                int month = int.Parse(dateArray[1]);                int day = int.Parse(dateArray[2]);                int days = GetDays(year, month, day);                int weekInt = 0;                Console.WriteLine("距离1900-1-1,有" + days + "天的时间");                Console.WriteLine("这一天是" + GetWeekDay(days, out weekInt));

可以用在js计算星期上。

取得日期对应的星期数