通过星期数和星期几获取日期 [英] get date by week number and week day
问题描述
如何通过指定月份中的星期几和星期几来查找任何日期...
例子...
如果我要
每个月的第三个星期四是什么日期
所以应该回复...
2011年11月11日
15/11/2011
2012年1月19日
2012年2月16日
我该如何做到这一点,请帮忙....
我能够做到这一点
how can find any date by specify week number of month and week day...
Example...
If i want
What is the date every month on third Thursday
so it should reply...
17/11/2011
15/11/2011
19/1/2012
16/2/2012
how can i achieve this please help....
i am able to do this
DateTime dt = DateTime.Today;
CultureInfo ciCurr = CultureInfo.CurrentCulture;
int weekNum = ciCurr.Calendar.GetWeekOfYear(dt, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);
weekNum = weekNum / 12;
string weekday = dt.DayOfWeek.ToString();
我可以获取任何日期的星期数和星期几.....
但是现在我想按给定的星期数和星期几来查找日期....
i am able to get week number and week day of any date.....
but now i want to find date by given week number and week day....
推荐答案
为DateTime实例添加一个名为WeekNumber的扩展方法,这里是代码:
to add an extension method called WeekNumber for a DateTime instance here is the code:
public static class DateTimeExtensions
{
public static int WeekNumber(this System.DateTime value)
{
return CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(value,CalendarWeekRule.FirstFourDayWeek,DayOfWeek.Monday);
}
}
感谢您的评论.我更新了.
您采用以下方法:
Thanks for comment. I updated it.
You the following method:
private List<datetime> GetDateByWeek(DateTime startDate, int weekNumOfMonth, int dayOfWeek)
{
List<datetime> dates = new List<datetime>();
DateTime dt = new DateTime(startDate.Year, startDate.Month, 1);
for (int i = 0; i < 5; i++)
{
int day = (weekNumOfMonth - 1) * 7 - 1 + dayOfWeek - (int)dt.DayOfWeek;
dates.Add(dt.AddDays(day >= 0 ? day : day + 7));
dt = dt.AddMonths(1);
}
return dates;
}</datetime></datetime></datetime>
要使用此功能,例如在第三周(周四),只需像这样调用:
To use this, for example for third week, thursday, just call like this:
List<DateTime> myDates = GetDateByWeek(DateTime.Now, 3, 5);
这篇关于通过星期数和星期几获取日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!