我怎样才能知道NSDate是否是营业日?

Sim*_*mon 2 objective-c nsdate nscalendar ios nslocale

我怎样才能知道是否NSDate是营业日?也就是说,根据用户当前的区域设置和日历设置,它是否是一个周末 - 所以不是硬编码只是周一到周五?

NSCalendar有一个firstWeekday特性,但只是似乎是一个表象的东西; 这是周日在美国和周一在英国.

编辑:我不担心假期,我只想以与内置日历应用程序相同的方式遮盖日历的周末.

Sul*_*han 5

iOS 8及更高版本的更新:

NSCalendar现在包含方法- (BOOL)isDateInWeekend:(NSDate*)日期

它会检查特定日历和区域设置中的日期是否属于周末.

老答案

如果你只需要在周末遮荫,那[NSDateComponents weekday]就是你的朋友.此方法将在星期日返回1,在星期六返回7.

事实:大多数申请假设周末=周六和周日.AFAIK对所有使用格里高利历的国家都是正确的.覆盖所有其他日历的唯一可能性是每个日历/区域设置具有本地数据库并监视更改.如果发生此类更改,则需要更新应用程序或必须下载新数据.

如果我们谈论工作日(不仅是周末),我们正在讨论的事情

  1. 没有明确的定义(公司之间的营业日变化是什么)
  2. 没有规范(例如 - 日期格式,时区等具有国际公认的规范)
  3. 通常由当地法律改变(例如假期添加)

您需要的是让用户根据自己的国籍和雇主设置您的应用程序以满足他们的个性化需求.