如何获得给定日期的下个月的第一个星期天?

问题描述:

我正在寻找一些逻辑让日期得到下个月的第一个星期天使用c#的给定日期。 如何使用c#获得给定日期的下个月的第一个星期天?如何获得给定日期的下个月的第一个星期天?

+1

您需要为此做各种事情。我首先得到下个月第一天的DateTime。然后计算一周中的每一天(使用DayOfWeek属性)。然后基于这两条信息,您可以计算出本月的第一个星期天。 – 2015-03-13 06:53:07

+0

Jon Skeet评论你的问题可能很幸运:P – 2015-03-13 07:01:23

+0

你的代码在哪里? – Raptor 2015-03-13 07:15:26

你没有显示任何的努力,但让我们来编码什么Jon says一步一步;

如何获得下个月的第一个星期天给定日期

我们称之为dtDateTime在你的问题中给定日期。所有月份以1作为日期编号开始。这就是为什么我们可以创建一个名为DateTimefirstDayOfNextMonth

DateTime firstDayOfNextMonth = new DateTime(dt.Year, dt.Month + 1, 1); 

现在怎么办?当然,我们需要检查一下星期几的名字,这是星期天还是不星期。到什么时候?直到我们找到星期天的一天。这就是为什么我们需要重复这一天(1天,每),直到我们找到它。我们可以使用DayOfWeek enumeration作为日期名称。

我们在我们的代码中将DateTime定义为firstSundayOfNextMonth;

DateTime firstSundayOfNextMonth; 

现在重复你下周的第一天,直到我们找到一个星期天;

while (firstDayOfNextMonth.DayOfWeek != DayOfWeek.Sunday) 
{ 
    firstDayOfNextMonth = firstDayOfNextMonth.AddDays(1); 
} 

当这while声明停止工作?是的,当我们找到第一个星期天的时候。这就是为什么我们需要在此循环之外将此值分配给firstSundayOfNextMonth变量。

while (firstDayOfNextMonth.DayOfWeek != DayOfWeek.Sunday) 
{ 
    firstDayOfNextMonth = firstDayOfNextMonth.AddDays(1); 
} 

firstSundayOfNextMonth = firstDayOfNextMonth; 

我们找到了。 firstSundayOfNextMonth是给定DateTime(本例中为dt)的下个月的第一个星期日。

试试这个:

DateTime dt1 = new DateTime(2015, 03, 13); 
DateTime dm = dt1.AddMonths(1); 
DateTime addm = new DateTime(dm.Year,dm.Month,1); 
var nextSunday = addm.AddDays(7 - (int)addm.DayOfWeek); 

你可以把任何日期代替2015, 03, 13year,month,day

public static DateTime GetFirstSundayOfNextMonth(DateTime givenDate) 
{ 
    DateTime firstDayNextMonth = givenDate.AddDays(-givenDate.Day + 1).AddMonths(1); 
    int diff = 7 - (int)firstDayNextMonth.DayOfWeek; 
    return firstDayNextMonth.AddDays(diff); 
} 
+1

Hiya在那里,虽然这可能很好地回答了这个问题,但请注意,其他用户可能不像您那样知识渊博。为什么不添加一点解释为什么这个代码工作?谢谢! – Vogel612 2015-03-13 09:18:40

+0

嗯,今天是05/04/2016 - >你今天要做的 - 当天的数字 - >上个月的最后一天 - > +1本月的第一天 - > +1个月 - >下个月的第一天。然后你计算一周中的哪一天是第一天,你需要多少天才能到达星期天,然后再添加这些天。 – Jack 2016-04-05 14:48:16

某一日期后,即可获取下周一天,我发现一个简单的方法。

​​