【问题标题】:Calculate the number of holidays between two dates in C#?在C#中计算两个日期之间的假期数?
【发布时间】:2012-04-25 14:21:17
【问题描述】:

我正在寻找一个优化的函数,它将返回 C# 中两个给定日期之间的公共假期和周末的数量


其实需求是结合假期和周末为用户制定一个好的假期计划。我不需要担心国家和宗教,因为我有网络服务来照顾特定国家和宗教的假期

【问题讨论】:

  • 什么宗教,哪些国家?有太多不同的方式来看待这个问题,无论哪种方式,它都不会是一个小的解决方案,有人会在没有证明你自己尝试过这样做的情况下为你准备好。
  • 这似乎很难看到,因为有这么多的假期,这取决于每个国家等。
  • 这是一个计算两个日期之间工作小时数的解决方案:stackoverflow.com/a/3835137 如果你有一个方法bool IsHoliday(DateTime date),你应该能够轻松地适应你的需要。

标签: c#


【解决方案1】:

您的问题可以分为两个问题:

  1. 如何计算假期?
  2. 如何计算两个给定范围之间的节假日数?

第一个问题有很多答案。您可以将它们输入到数据库中,从网站下载,查找计算假期的 C# 类适合您的文化/环境(有很多!)

然后,您必须遍历从开始日期到结束日期的天数。这很容易做到:

DateTime startTime = new DateTime(2011, 4, 1);
DateTime endTime = new DateTime(2012, 4, 1);
int numberOfHolidays;

for (DateTime currentDate = startTime; currentDate <= endTime currentDate = currentDate.AddDays(1)) {
    if (isHoliday(currentDate) || isWeekendDay(currentDate))
      numberOfHolidays++;
}

您必须自己实现isHolidayisWeekendDay 方法,请参阅第一个问题部分的答案。

【讨论】:

  • 其实需求是结合假期和周末为用户制定一个好的假期计划。我不需要担心国家和宗教,因为我有网络服务来照顾特定国家和宗教的假期。
  • 好的,这就是问题 1 的答案。现在,尝试从网站使用例如获取这些信息。我的代码来计算假期的数量。如果您卡在某个地方,请提出一个新的、更具体的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多