2017-09-19 4 views
-5

올해는 모든 월요일의 날짜를 출력하려하지만, 내 if 요소는 내가 제공하는 조건에서 작동하지 않습니다.올해의 모든 월요일의 날짜를 출력하려면 어떻게합니까?

static void Main(string[] args) 
{ 
    var dagEtt = new DateTime(DateTime.Now.Year, 1, 1); 
    while (dagEtt <= DateTime.MaxValue) 
    { 
     if (dagEtt == DayOfWeek.Monday) 
      Console.WriteLine(dagEtt); 
     dagEtt = dagEtt.AddDays(1); 
    } 
} 
+1

'dagEtt.DayOfWeek == DayOfWeek.Monday'는 –

+5

올해 날짜를 얻기, 당신은 올해 언젠가 시작하고 DateTime.MaxValue','전에 언젠가 멈추지해야하는 미래에 약 8000 년이 될까요? 첫 번째 월요일을 찾으면 1 대신 7 일을 추가하는 것이 어떻습니까? – Amy

+3

@Amy 미래 보장형입니다. –

답변

1

내가 당신은 % 연산자를 사용하여 한 해의 첫 번째 월요일을 계산할 수 있습니다 코드 조금

var start = new DateTime(DateTime.UtcNow.Year, 1, 1); 
var end = start.AddYears(1); 

while (start < end) 
{ 
    if (start.DayOfWeek == DayOfWeek.Monday) 
    { 
     Console.WriteLine(start); 
     start = start.AddDays(7); 
    } 
    else 
    start = start.AddDays(1); 
} 
+0

월요일부터 7 일이 월요일이 아닌 다른 날이 될 수 있습니까? 와우 –

+0

@CamiloTerevinto 나는 이것이 명확하지 않다는 것을 안다. 그리고 우리는 그걸 참아 야한다. :) – tym32167

+0

Start = start.AddDays (7 + DayOfWeek.Monday-start.DayOfWeek) – Taemyr

0

을 변경 :

내 코드입니다. 이렇게하면 루프가 크게 단순 해집니다.

static void Main(string[] args) 
{ 
    int year = DateTime.Now.Year; 
    DateTime startDate = FirstMonday(year); 

    while (startDate.Year == year) 
    { 
     Console.WriteLine(startDate); 
     startDate = startDate.AddDays(7); 
    } 
} 

https://stackoverflow.com/a/5665161/3194005

public static DateTime FirstMonday(int year) 
{ 
    var firstDay = new DateTime(year, 1, 1); 

    return new DateTime(year, 1, (8 - (int)firstDay.DayOfWeek) % 7 + 1); 
}