我正在嘗試使用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>
的代碼是太多,張貼在這裏,但是這應該解決您的問題。使用該代碼並根據需要進行修改。
您可以使用DateTime.DayOfWeek,以確定它是否是一個週末或工作日,但沒有內置的是要確定它是否是一個公衆假期與否,如果這就是你在問什麼。
我公司採用的是SQL表是公司的一個假期的所有日期,因此這將是一個簡單的單SELECT(或存儲過程)。然後有人必須維護那張桌子。如果只是你,硬編碼將非常相當。
一個主要的選擇是刮一個列出公衆假期的網站。我假設你只想要聯邦假期,所以不包括情人節。根據您的應用程序在做什麼,您可能需要能夠與標準列表分道揚standard,這就是下降的原因。
但是你這樣做的話,我會建議檢查你對源方法,包括:
只是爲了確保你有你想要什麼。
這是一個非常原始的例子,你可以如何使用絕對日期存儲美國假期表格。勞動節和哥倫布日將需要一點想象力,因爲它們可變日期。
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