在c#中获得给定周数的星期五
本文关键字:周数 星期五 | 更新日期: 2023-09-27 18:08:34
我需要查找一年中给定周数的星期五日期例(第37周)
(2011年的第一个星期五是1月1日当周的星期五。在这种情况下,第一个星期五是2010年12月31日。)
DateTime.Parse("12/31/2010").AddDays(36 * 7);
编辑:我添加了一些东西,你可能想要更多,这里我生成一个日期列表,然后你可以使用LINQ轻松获得你想要的。
public void DateThing()
{
List<DateTime> dateList = new List<DateTime>();
DateTime start = DateTime.Parse("1/1/2010");
for (int i = 0; i < 1000; i++)
{
dateList.Add(start.AddDays(i));
}
var dateYouWant = GetDayOfWeekForGivenYear(DayOfWeek.Friday, 37, 2011, dateList);
}
private DateTime GetDayOfWeekForGivenYear(DayOfWeek dayOfWeek, int weekNum, int year, List<DateTime> dateList)
{
var days = dateList.Where(w => w.Year == year && w.DayOfWeek == dayOfWeek);
var day = days.FirstOrDefault(w => w.DayOfYear >= (weekNum - 1) * 7);
if (weekNum == 1)
{
return day.DayOfYear > (int)day.DayOfWeek ? day.AddDays(-7) : day;
}
else if (weekNum == 53 && day == default(DateTime))
{
return days.Last(w => w.DayOfWeek == dayOfWeek).AddDays(7);
}
return day;
}
试试这样做…
var year = 2011;
var week = 37;
var date = new DateTime(year, 1, 1);
while (date.DayOfWeek != DayOfWeek.Friday) date.AddDays(1);
date = date.AddDays(7 * (week - 1));
假设一年的第一周是第一个星期五所在的周。情况可能并非总是如此……你可能希望一年的第一个星期是第一个完整的星期。或者是第一部分…根据需要调整。希望这对你有帮助