2009-07-24 2 views

ответ

159

Вы можете использовать NSDate и NSCalendar классы:

NSDate *today = [NSDate date]; //Get a date object for today's date 
NSCalendar *c = [NSCalendar currentCalendar]; 
NSRange days = [c rangeOfUnit:NSDayCalendarUnit 
         inUnit:NSMonthCalendarUnit 
         forDate:today]; 

today является NSDate объект, представляющий текущую дату; это можно использовать для определения количества дней в текущем месяце. Затем создается экземпляр объекта NSCalendar, который может использоваться вместе с NSDate для текущей даты, чтобы вернуть количество дней в текущем месяце с помощью функции rangeOfUnit:inUnit:forDate:.

days.length будет содержать количество дней в текущем месяце.

Здесь приведены ссылки на документы для NSDate и NSCalendar, если вы хотите получить дополнительную информацию.

+0

Похоже, это будет делать трюк. Спасибо :) –

+0

Я думаю, вы имели в виду forDate: сегодня –

+0

Да, я, к сожалению, назвал его «date», когда я тестировал его в Xcode. –

4

-[NSCalendar rangeOfUnit:inUnit:forDate:]

9

Swift синтаксис:

let date = NSDate() 
let cal = NSCalendar(calendarIdentifier:NSCalendarIdentifierGregorian)! 
let days = cal.rangeOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitMonth, forDate: date) 
0

Swift 3 синтаксис немного изменился от ответа Эрез в:

let cal = Calendar(identifier: .gregorian) 
let monthRange = cal.range(of: .day, in: .month, for: Date())! 
let daysInMonth = monthRange.count 
Смежные вопросы