2010-05-13 2 views

답변

10
public bool IsThirdMondayOfMonth(DateTime dt) 
{ 
    if(dt.DayOfWeek == DayOfWeek.Monday && dt.Day > 14 && dt.Day <= 21) 
    { 
    return true; 
    } 
    return false; 
} 
+4

더 나은 :'return (dt.DayOfWeek == DayOfWeek.Monday && dt.Day> 14 && dtDay <22); ' –

+0

당신은 이것을 DateTime의 확장으로 원할 수 있습니다. 확장 라이브러리에 보관할 가치가있는 여러 가지 항목이있을 것입니다. – Carlos

+0

알았어, 나는 무언가가 내장되어 있기를 바라고 있었지만 너무 가능성이 있다고 생각하지는 않았다. 나는이 코드 스 니펫 중 일부를 여기에서 가져 가야 할 것 같다. 고마워요. – sooprise

1

월요일을 15 일에서 21 일 사이에 찾습니다.

0

당신이 원하는 것을 할 수있는 날짜 조작 라이브러리가 있는지 나도 몰라,하지만 당신은 아주 쉽게 자신의 함수를 작성할 수 있습니다

using System; 

class Program { 
    static void Main(string[] args) { 
     int year = 2010; 
     int month = 05; 
     DateTime thirdMonday = ThirdMonday(year, month); 
    } 

    private static DateTime ThirdMonday(int year, int month) { 
     for (int day = 1; day <= DateTime.DaysInMonth(year, month); ++day) { 
      DateTime dt = new DateTime(year, month, day); 
      if (dt.DayOfWeek == DayOfWeek.Monday) { 
       return dt.AddDays(14); 
      } 
     } 
     // this should never happen 
     throw new Exception(); 
    } 
} 
8

나는 당신의 "생각하지 않습니다 다른 단어는 "당신이 먼저 설명하는 문제를 정말로 재현하므로, 나는 둘 다 대답 할 것입니다.

주어진 해의 특정 달에서 특정 요일의 n 번째 발생을 확인하는 매우 간단한 방법입니다.

public static DateTime DayOccurrence(int year, int month, DayOfWeek day, 
    int occurrenceNumber) 
{ 
    DateTime start = new DateTime(year, month, 1); 
    DateTime first = start.AddDays((7 - ((int)start.DayOfWeek - (int)day)) % 7); 

    return first.AddDays(7 * (occurrenceNumber - 1)); 
} 

날짜가 어느 월 (또는 다른 요일)인지 판단하는 것이 훨씬 쉽습니다. 그 달의 천장/7 :

public static int DayOccurrence(DateTime date) 
{ 
    return (int)Math.Ceiling(date.Day/7.0); 
} 
+0

+1 OP가 찾고있는 것 같아서 편집 한 것이 확실합니다. –

관련 문제