我正在尝试使用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