首页 > 编程知识 正文

根据日期计算周次,表格根据年份计算月份

时间:2023-05-04 03:07:51 阅读:248377 作者:2103

1、根据年份计算周次

public class WeekDisPlay { public int WeekNumber { get; set; } public string WeekSort { get; set; } } /// <summary> /// 根据年份计算共多少周 /// </summary> /// <param name="year">年份</param> public List<WeekDisPlay> CalculateWeeksByYear(string year) { int inputYear = Convert.ToInt32(year); int allDays = (inputYear % 4 == 0 && inputYear % 100 != 0 || inputYear % 400 == 0) ? 366 : 365;//根据年份获取当前年的总天数 int weeksCount = 0; if (allDays % 7 == 0) { weeksCount = allDays / 7; } else { weeksCount = (allDays / 7) + 1; } List<WeekDisPlay> weekList = new List<WeekDisPlay>(); for(int i = 1; i <= weeksCount; i++) { WeekDisPlay item = new WeekDisPlay(); item.WeekNumber = i; item.WeekSort = "第" + i.ToString() + "周"; weekList.Add(item); } return weekList ; }

2、根据年份和周次计算起止日期(按照自然周)

/// <summary> /// 根据年份和周,计算当前周所对应的日期(按自然周计算) /// </summary> /// <param name="year">年份</param> /// <param name="week">周次(第几周)</param> public string CalculateDate(string year,string week) { var first = DateTime.MinValue; var last = DateTime.MinValue; int inputYear = Convert.ToInt32(year); int inputWeek = Convert.ToInt32(week); DateTime startDay = new DateTime(inputYear, 1, 1); //该年第一天 DateTime endDay = new DateTime(inputYear + 1, 1, 1).AddMilliseconds(-1);//该年的最后一天 int dayOfWeek = 0; if (Convert.ToInt32(startDay.DayOfWeek.ToString("d")) > 0) { dayOfWeek = Convert.ToInt32(startDay.DayOfWeek.ToString("d")); //该年第一天为星期几 } if (dayOfWeek == 0) { dayOfWeek = 7; } if (inputWeek == 1) { first = startDay.AddDays(7 - dayOfWeek - 6); if (dayOfWeek == 6) { last = first; } else { last = startDay.AddDays((7 - dayOfWeek)); } } else { first = startDay.AddDays((8 - dayOfWeek) + (inputWeek - 2) * 7); //index周的起始日期 last = first.AddDays(6); } if(first< startDay) { first = startDay; } if (last > endDay) { last = endDay; } return first.ToString("yyyy-MM-dd") + "至" + last.ToString("yyyy-MM-dd"); }

4、根据年份和周次计算起止日期(按照每7天一周)

/// <summary> /// 根据年份和周次计算起止日期(按照每七天一周计算) /// </summary> /// <param name="year">年份</param> /// <param name="week">周次(第几周)</param> public string CalculateDateByDays(string year, string week) { var first = DateTime.MinValue; var last = DateTime.MinValue; int inputYear = Convert.ToInt32(year); int inputWeek = Convert.ToInt32(week); DateTime startDay = new DateTime(inputYear, 1, 1); //该年第一天 DateTime endDay = new DateTime(inputYear + 1, 1, 1).AddMilliseconds(-1);//该年的最后一天 int startDays = (inputWeek - 1) * 7; int endDays = inputWeek * 7-1; first = startDay.AddDays(startDays); last = startDay.AddDays(endDays); if (first < startDay) { first = startDay; } if (last > endDay) { last = endDay; } return first.ToString("yyyy-MM-dd") + "至" + last.ToString("yyyy-MM-dd"); }

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。