• 输入年和周得到对应的,年月日,星期几,当前周,总周数,当前周标记


       /// <summary>
            /// 根据传过来的周找对应的年月日和星期几
            /// </summary>
            /// <param name="week"></param>
            /// <returns></returns>
            public static List<DateAndXQ> GetDateByWeek(int week, int year=0, int status = 0) //周,月,状态
            {
                //当前时间
                var NowTime = DateTime.Now;
                //当前周
                GregorianCalendar gc = new GregorianCalendar();
                int weekOfYear = gc.GetWeekOfYear(NowTime, CalendarWeekRule.FirstDay, DayOfWeek.Monday);

                List<DateAndXQ> datetime = new List<DateAndXQ>();
                //获取当前的年份
                var someTime = Convert.ToDateTime(status == 0 ? NowTime.ToString("yyyy-1-1") : NowTime.AddYears(1).ToString("yyyy-1-1"));
                if (year!=0)
                {
                    someTime = Convert.ToDateTime(year+"- 1 - 1");
                }
                //判断本年有多少周
                int countDay = DateTime.Parse(someTime.Year + "-12-31").DayOfYear;
                int countWeek = countDay / 7;
                if (week > 0 && week <= countWeek)//做数据控制防止输错,造成数据混乱
                {
                    int i = someTime.DayOfWeek - DayOfWeek.Monday;
                    if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。
                    TimeSpan ts = new TimeSpan(i, 0, 0, 0);
                    //获取第N周的星期一
                    someTime = someTime.Subtract(ts).AddDays((week - 1) * 7);
                    ////获得星期几
                    //someTime = someTime.AddDays(day - 1);
                    var cnt = status == 1 ? 1 : 7;//如果是1则只查每周的开始结束时间
                    for (int x = 1; x <= cnt; x++)
                    {
                        DateAndXQ time = new DateAndXQ();
                        //获得星期几
                        time.Date = someTime.AddDays(x - 1).ToString("yyyy-MM-dd");
                        time.MinDate = someTime.AddDays(0).ToString("yyyy-MM-dd");
                        time.MaxDate = someTime.AddDays(6).ToString("yyyy-MM-dd");
                        //根据循环出的日期找出对应的月和天对应的星期
                        //转化为日期格式
                        var dates = Convert.ToDateTime(time.Date);
                        var years = dates.Year;
                        var month = dates.Month;
                        var day = dates.Day;
                        time.Week = CaculateWeekDay(years, month, day);
                        time.WeekCnt = countWeek;
                        time.WeekNow = week;
                        //当前周标记
                        time.WeekNowFlag = weekOfYear == week ? "T" : "F";
                        datetime.Add(time);
                    }
                }
                return datetime;
            }


            /// <summary>
            /// 根据年月日获得星期几
            /// </summary>
            /// <param name="year"></param>
            /// <param name="month"></param>
            /// <param name="day"></param>
            /// <returns></returns>
            private static string CaculateWeekDay(int year, int month, int day)
            {
                string weekstr = string.Empty;
                //把一月和二月看成是上一年的十三月和十四月
                if (month == 1) { month = 13; year--; }
                if (month == 2) { month = 14; year--; }
                int week = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
                switch (week)
                {
                    case 0: weekstr = "星期一"; break;
                    case 1: weekstr = "星期二"; break;
                    case 2: weekstr = "星期三"; break;
                    case 3: weekstr = "星期四"; break;
                    case 4: weekstr = "星期五"; break;
                    case 5: weekstr = "星期六"; break;
                    case 6: weekstr = "星期日"; break;
                }
                return weekstr;
            }

  • 相关阅读:
    2018-2019-2 20165215《网络对抗技术》Exp9 :Web安全基础
    2018-2019-2 20165215《网络对抗技术》Exp8 Web基础
    2018-2019-2 20165215《网络对抗技术》Exp7 网络欺诈防范
    2018-2019-2 20165215《网络攻防技术》Exp6 信息搜集与漏洞扫描
    2018-2019-2 20165215《网络对抗技术》Exp5 MSF基础应用
    2018-2019-2 20165215《网络对抗技术》Exp4 恶意代码分析
    2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 20165215
    2018-2019-2 《网络对抗技术》Exp2 后门原理与应用 20165215
    2018-2019-2 《网络对抗技术》 Exp1 PC平台逆向破解 20165215
    20165220课程设计个人报告——Part4-Cortex M4模块
  • 原文地址:https://www.cnblogs.com/Jinfeng1213/p/8580834.html
Copyright © 2020-2023  润新知