通过星期数和星期几获取日期 [英] get date by week number and week day

查看:161
本文介绍了通过星期数和星期几获取日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何通过指定月份中的星期几和星期几来查找任何日期...


例子...

如果我要

每个月的第三个星期四是什么日期


所以应该回复...

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆