2

如何确定是否NSDate是工作日?也就是说,根据用户当前的语言环境和日历设置是否是周末 - 所以没有硬编码为星期一到星期五?

NSCalendar有一个firstWeekday属性,但这似乎只是一种表现形式;美国是星期天,英国是星期一。

编辑:我不担心假期,我只是希望能够以与内置日历应用程序相同的方式遮蔽日历的周末。

4

3 回答 3

5

iOS 8 及更高版本的更新:

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

它检查日期是否在特定日历和语言环境中属于周末。

旧答案

如果你只需要在周末遮阴,[NSDateComponents weekday]是你的朋友。此方法将返回 1 代表星期日和 7 代表星期六。

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

如果我们谈论的是工作日(不仅仅是周末),我们谈论的是一些

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

您需要的是让用户根据他们的国籍和雇主来设置您的应用程序以满足他们的个人需求。

于 2013-07-09T10:48:36.890 回答
0

如果日期是星期一到星期五,您可以获得,但据我所知,NSDate 没有工作日之类的东西,具体取决于位置,例如 firstWeekday,因此您需要自己实施。

于 2013-07-09T10:45:49.613 回答
-1

使用NSDateComponents.

NSDate *date = [NSDate date];
NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:date];
NSLog(@"Weekday: %d", dateComponents.weekday);

这还将区分设备是否位于将星期日或星期一视为一周第一天的区域。

于 2013-07-09T13:20:55.897 回答