计算从给定日期开始的月份中的星期几?

灿烂的笑容

我正在努力寻找一种简单有效的解决方案来计算一个月中的星期几。例如,如果给定日期是第一个星期一Monday 5th March 2018之后我想了一个月的每个第一个星期一的日期为未来6个月例如:Monday 2nd April 2018Monday 3rd May 2018等。

我试图从这个问题中使用以下代码但是,下面的代码仅返回我希望它返回整个日期的星期数。

static class DateTimeExtensions
{
    static GregorianCalendar _gc = new GregorianCalendar();
    public static int GetWeekOfMonth(this DateTime time)
    {
        DateTime first = new DateTime(time.Year, time.Month, 1);
        return time.GetWeekOfYear() - first.GetWeekOfYear() + 1;
    }

    static int GetWeekOfYear(this DateTime time)
    {
        return _gc.GetWeekOfYear(time, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
    }
}

但是我很困惑,不知道如何修改上面的代码来解决这个问题。任何帮助将不胜感激。

萨尔曼A

只需在输入日期中加上4周,如有必要,再增加7天即可:

static DateTime GetNextDate(DateTime d1)
{
    System.Diagnostics.Debug.Assert(d1.Day <= 28, "Behavior not described");
    DateTime d2 = d1.AddDays(28);
    // the following evaluates to 1 for 1-7, 2 for 8-14, etc
    int n1 = (d1.Day - 1) / 7 + 1;
    int n2 = (d2.Day - 1) / 7 + 1;
    if (n2 != n1)
    {
        d2 = d2.AddDays(7);
    }
    return d2;
}

样本输入和输出:

Thu 2018-Mar-01 > Thu 2018-Apr-05
Fri 2018-Mar-02 > Fri 2018-Apr-06
Sat 2018-Mar-03 > Sat 2018-Apr-07
Sun 2018-Mar-04 > Sun 2018-Apr-01
Mon 2018-Mar-05 > Mon 2018-Apr-02
Tue 2018-Mar-06 > Tue 2018-Apr-03
Wed 2018-Mar-07 > Wed 2018-Apr-04
Thu 2018-Mar-08 > Thu 2018-Apr-12
Fri 2018-Mar-09 > Fri 2018-Apr-13
Sat 2018-Mar-10 > Sat 2018-Apr-14
Sun 2018-Mar-11 > Sun 2018-Apr-08
Mon 2018-Mar-12 > Mon 2018-Apr-09
Tue 2018-Mar-13 > Tue 2018-Apr-10
Wed 2018-Mar-14 > Wed 2018-Apr-11
Thu 2018-Mar-15 > Thu 2018-Apr-19
Fri 2018-Mar-16 > Fri 2018-Apr-20
Sat 2018-Mar-17 > Sat 2018-Apr-21
Sun 2018-Mar-18 > Sun 2018-Apr-15
Mon 2018-Mar-19 > Mon 2018-Apr-16
Tue 2018-Mar-20 > Tue 2018-Apr-17
Wed 2018-Mar-21 > Wed 2018-Apr-18
Thu 2018-Mar-22 > Thu 2018-Apr-26
Fri 2018-Mar-23 > Fri 2018-Apr-27
Sat 2018-Mar-24 > Sat 2018-Apr-28
Sun 2018-Mar-25 > Sun 2018-Apr-22
Mon 2018-Mar-26 > Mon 2018-Apr-23
Tue 2018-Mar-27 > Tue 2018-Apr-24
Wed 2018-Mar-28 > Wed 2018-Apr-25

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

getDay()方法无法返回给定日期的星期几

如何获得给定日期的星期几?

如何获得给定日期的星期几?

php:使用“日期”功能从给定日期开始的星期几:比预期答案提前一天

如何从给定日期查找星期的开始日期?

查找给定日期和星期几最近的星期几

计算给定日期范围的星期六数

给定日期和星期几,找到将来的最接近日期

计算自给定日期以来经过的月份中的特定天数

如何找到给定日期的星期几“ tm_wday”?

如何返回给定日期的星期几-年月日

从bash中减去给定日期的月份

Hive - 查询以获取星期六作为给定日期的一周开始日期

使用给定的参考年份计算给定日期的星期数

计算给定日期的整周数

如何在bash脚本中给定日期参数的月份中获得第二个星期天

如何只获取两个给定日期之间的月份的最后一天是星期一的日期

如何计算从给定日期算起的月份剩余天数

将日期和月份与给定日期分开

VBA代码从给定日期获取星期数

获取给定日期的正确星期数

在Java FX中获取给定日期的星期数

Java获取给定日期的一年中的星期

需要使用Javascript查找给定日期的日历季度中的星期数

获取指定日期的上一个星期二(或一周中的任何给定日期)

动态显示给定日期的月份

如何从给定日期获取月份名称和年份?

在SQL Server中如何获取给定日期的所有月份和年份

如何在Excel中从给定日期添加/减去月份