【问题标题】:Calculate last 16 Thusday's from current date [closed]计算从当前日期开始的最后 16 个星期四 [关闭]
【发布时间】:2013-11-25 10:21:29
【问题描述】:

我有 c# asp.net 应用程序。 我想计算前 16 个 Thursday 的日期,同时给出当前日期,它会给出 16 个最后一个 Thursday's 的日期。

请为此提供示例代码。

非常感谢。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    此方法有效:

    public static IList<DateTime> GetWeekDays(DateTime startDate, DayOfWeek day, int count, bool pastDays, bool includeStartDate)
    {
        int start = (int)startDate.DayOfWeek;
        int desired = (int)day;
        int offset;
        int diff = Math.Abs(start - desired);
        if(!includeStartDate && start == desired)
            diff = 7;
        offset = pastDays ? (-1) * (7- diff) : diff;
        int weekDays = pastDays ? (-1) * 7 : 7;
        DateTime firstDay = startDate.AddDays(offset);
        IList<DateTime> dates = Enumerable.Range(0, count)
            .Select(i => firstDay.AddDays(i * weekDays))
            .ToList();
        return dates;
    }
    

    它支持两个方向。

    用法很简单:

    IList<DateTime> past16Wednesdays = GetWeekDays(DateTime.Today, DayOfWeek.Wednesday, 16, true, true);
    foreach(DateTime dt in past16Wednesdays)
        Console.WriteLine(dt.ToString("d", CultureInfo.InvariantCulture));
    

    结果是

    11/20/2013
    11/13/2013
    11/06/2013
    10/30/2013
    10/23/2013
    10/16/2013
    10/09/2013
    10/02/2013
    09/25/2013
    09/18/2013
    09/11/2013
    09/04/2013
    08/28/2013
    08/21/2013
    08/14/2013
    08/07/2013
    

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      相关资源
      最近更新 更多