C#을 사용하여 영업일을 찾으려고합니다. 나는 미국 휴일을 찾는 방법이 있는지 궁금하거나 나는 단지 날짜가 휴일인지 여부를 결정하는 함수를 작성해야합니까?연휴 기간 C#
public bool isHoliday(DateTime date)
{
//holiday input
}
C#을 사용하여 영업일을 찾으려고합니다. 나는 미국 휴일을 찾는 방법이 있는지 궁금하거나 나는 단지 날짜가 휴일인지 여부를 결정하는 함수를 작성해야합니까?연휴 기간 C#
public bool isHoliday(DateTime date)
{
//holiday input
}
이 예를 사용할 수있다 : http://www.codeproject.com/Articles/11666/Dynamic-Holiday-Date-Calculator
링크에서 제공되는 솔루션 :
우리는이 다른 모두를위한 모든 규칙을 저장하는 데 이상적 일 것이다 결정공휴일을 XML 파일에 저장 한 다음 클래스가 해당 규칙을 해석하고 각 공휴일의 정확한 날짜를 계산할 수있는 클래스를 작성합니다. 이를 위해 우리는 공휴일을 서로 비슷하게 계산 된 유형으로 구분해야했습니다. 다음은 우리가 처리 휴일의 다른 유형과 샘플 XML 구성은 각각 다음과 같습니다
<Holiday name="Groundhog Day">
<Month>2</Month>
<Day>2</Day>
</Holiday>
<Holiday name="Tax Day">
<WeekdayOnOrAfter>
<Month>4</Month>
<Day>15</Day>
</WeekdayOnOrAfter>
</Holiday>
코드는 여기에 게시하려면 너무 많은,하지만이 문제를 해결해야한다. 해당 코드를 사용하고 필요에 맞게 수정하십시오.
제 생각에 그것은 다른 기관에 적합 할 수 있습니다. 내가 맞습니까? – galaxyan
@galaxyan 예. 필자가 제공 한 링크에서'Jay Muntz'의 게시물을 읽으십시오. 그는 어떻게 문제를 해결했는지 자세하게 설명합니다. 희망이 당신을 도와줍니다. – Dayan
XML을 사용하면 모든 논리를 나타낼 수 없습니다. 예를 들어 근무일의 폴백은 주말의 공휴일입니다. 이 라이브러리를 사용하여 폴백을 지원하는 계산에 사용할 수 있습니다. https://www.nuget.org/packages/Nager.Date – live2
당신이 주말이나 평일이야,하지만 붙박이가 당신이 요구하는지 무슨 경우는 공휴일의 여부를 결정하는 것이었다 존재하지 않는 경우는 결정 DateTime.DayOfWeek를 사용할 수 있습니다.
우리 회사는 회사의 휴가 모든 날짜에 대한 SQL 테이블을 사용하십시오, 그래서 이것은 간단한 단일 SELECT (또는 저장 프로 시저) 일 것이다. 그런 다음 누군가는 그 테이블을 유지해야합니다. 그것이 너라면, 하드 코딩은 꽤 똑같을 것이다.
하나의 주요 대안은 공휴일을 나열하는 웹 사이트를 긁는 것입니다. 예를 들어 발렌타인 데이를 제외하고 연방 공휴일 만 원한다고 가정합니다. 응용 프로그램에서 수행중인 작업에 따라 표준 목록에서 벗어날 수 있어야 할 수도 있습니다.
는 당신이 그것을 할 그러나, 나는 포함한 소스에 대한 당신의 방법을 확인 제안 당신이 원하는.
이것은 절대 날짜가있는 공휴일에 대해 미국 공휴일 테이블을 저장하는 방법의 매우 기본적인 예입니다. 노동절과 콜럼버스 데이는 날짜가 변하기 때문에 약간의 상상력이 필요합니다.
class VariableHoliday
{
public string Name {get; set;}
public bool IsOnDate(DateTime date)
{
//logic to detect the variable dates goes here!
}
}
static readonly Dictionary<DateTime, string> m_Holidays = new Dictionary<DateTime,string>
{
{ new DateTime(1,1,1), "New Years Day" },
{ new DateTime(1,7,4), "Independence Day" },
{ new DateTime(1,7,4), "Independence Day" },
/*FILL OUT ALL OF THE HOLIDAYS YOU WANT TO OBSERVE*/
};
static List<VariableHolidays> m_VariableHolidays = new List<VariableHolidays>();
public bool isHoliday(DateTime date)
{
bool isHoliday = m_Holidays.HasKey(new DateTime(1, date.Month, date.Day));
if(!isHoliday)
m_VariableHolidays.Any(p => p.IsOnDate(date));
}
public string getHolidayName(DateTime date)
{
if(m_Holidays.HasKey())
return m_Holidays[new DateTime(1, date.Month, date.Day)];
else
{
var holiday = m_VariableHolidays.FirstOrDefault(p => p.IsOnDate(date));
if(holiday != null) return holiday.Name
}
throw new InvalidOperationException("Date is not a holiday");
}
100 명 미국인에게 미국 공휴일 목록을 요청하면 100 가지의 답변을 얻을 수 있습니다. 앱의 휴일 구성 요소를 정의해야합니다. –
이 사이트는이를위한 서비스와 API를 제공합니다. 나는 그들이 얼마나 훌륭한 지 모르며 나는 그들과 제휴하지 않았다.검색 결과 일뿐입니다. http://www.timeanddate.com/services/api/ – Steve
기관에 따라 모든 휴일이 인정되는 것은 아닙니다. 따라서 명시 적으로 정의해야 할 수도 있습니다. – user1477388