일년 동안 반복되는 코드 (일별 반복)를 작성하고 매월 셋째 월요일마다 특별한 것이 있기를 원한다면 어떻게해야합니까?C# : 매월 세 번째 월요일이 어느 월요일인지 찾는 방법?
즉, 현재 월요일이 매월 어떤 월요일인지를 찾는 가장 좋은 방법은 무엇입니까?
일년 동안 반복되는 코드 (일별 반복)를 작성하고 매월 셋째 월요일마다 특별한 것이 있기를 원한다면 어떻게해야합니까?C# : 매월 세 번째 월요일이 어느 월요일인지 찾는 방법?
즉, 현재 월요일이 매월 어떤 월요일인지를 찾는 가장 좋은 방법은 무엇입니까?
public bool IsThirdMondayOfMonth(DateTime dt)
{
if(dt.DayOfWeek == DayOfWeek.Monday && dt.Day > 14 && dt.Day <= 21)
{
return true;
}
return false;
}
월요일을 15 일에서 21 일 사이에 찾습니다.
당신이 원하는 것을 할 수있는 날짜 조작 라이브러리가 있는지 나도 몰라,하지만 당신은 아주 쉽게 자신의 함수를 작성할 수 있습니다
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();
}
}
나는 당신의 "생각하지 않습니다 다른 단어는 "당신이 먼저 설명하는 문제를 정말로 재현하므로, 나는 둘 다 대답 할 것입니다.
주어진 해의 특정 달에서 특정 요일의 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);
}
+1 OP가 찾고있는 것 같아서 편집 한 것이 확실합니다. –
"다른 단어"가 다른 것을 말하고 있다고 생각합니다. :) – MusiGenesis