2013-07-09 5 views
2

Как я могу узнать, является ли NSDate рабочим днем? То есть, независимо от того, будет ли это уик-энд в соответствии с текущими языковыми настройками и настройками календаря пользователя, - так что не жестко запрограммировано только с понедельника по пятницу?Как узнать, является ли NSDate рабочим днем?

NSCalendar имеет свойство firstWeekday, но это, как представляется, представляет собой презентационную вещь; это воскресенье в США и в понедельник в Великобритании.

EDIT: Я не беспокоюсь о праздниках, я просто хочу, чтобы можно было угадывать выходные дни календаря так же, как и встроенное приложение для календарей.

+0

Существуют ли культуры, где с понедельника по пятницу не единственные рабочие дни? – trojanfoe

+0

Да: http://en.wikipedia.org/wiki/Workweek_and_weekend – Simon

+0

Ах, интересно. – trojanfoe

ответ

0

Вы можете получить, если день с понедельника по пятницу, но, насколько я знаю, в NSDate нет таких вещей, как рабочий день, в зависимости от местоположения, например firstWeekday, поэтому вам нужно будет его реализовать самостоятельно.

+2

Почему нисходящий? –

5

Обновление для прошивки 8 и выше:

NSCalendar теперь содержит методу - (BOOL)isDateInWeekend:(NSDate *)date

, который проверяет, находится ли дата под выходными в конкретном календаре & местности.

Старого ответ

Если вам нужно только тень уикэнды, [NSDateComponents weekday] является вашим другом. Этот метод вернет 1 для воскресенья и 7 для субботы.

Факультет: Большинство приложений предполагает выходные = субботу & Воскресенье. AFAIK это правильно для всех стран, использующих григорианский календарь. Единственная возможность, охватывающая все другие календари, - иметь локальную базу данных на каждый календарь/локаль и следить за изменениями. Если такое изменение происходит, требуется обновление приложения или необходимо загрузить новые данные.

Если мы говорим о рабочих дней (не только по выходным дням), мы говорим о чем-то, что

  1. не имеет четкого определения (что является рабочий день изменения между компаниями)
  2. не указал спецификации (например - дата форматирования, часовых поясов и т.д. имеет международно признанные спецификации)
  3. часто меняется местным законодательством (например, праздники добавлено)

Что вам нужно позволяет пользователям создавать приложения для своих индивидуальных потребностей в зависимости от их гражданства и работодателя.

+0

Но в какие дни выходные? Это не всегда суббота и воскресенье. – Simon

+0

@Simon См. Первую часть моего ответа.Нет определения или стандарта, поэтому он недоступен по языку. Большинство приложений предполагают, что выходные всегда равны субботе и воскресеньям. – Sulthan

+0

Встроенный календарь управляет каким-то образом, поэтому это должно быть возможно. – Simon

-1

Использование NSDateComponents.

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

Это также будет определять, находится ли устройство на территории, где воскресенье или понедельник считаются первым днем ​​недели.

+0

Я понимаю, как найти, что такое будний день. Мне нужно знать, является ли этот рабочий день рабочим днем ​​в соответствии с настройками локали пользователя. – Simon