2015-01-22 6 views
2

Я пытаюсь получить номер недели с даты. Может кто-то пожалуйста, скажите мне, почему это не только возвращение 0 независимо от того, какую дату я ставлю там:NSCalendar неделя номер

let currentWeekNumber = NSCalendar.currentCalendar().components(NSCalendarUnit.CalendarUnitWeekOfYear, fromDate: myDate).weekOfYear 

Формат MyDate, как это 2015-01-23 11:52:35 +0000

Решение в Swift было бы неплохо :)

+2

Невозможно воспроизвести. С 'let myDate = NSDate()', ваш код возвращает (правильное) значение '4'. –

+0

А (небольшой) автономный пример с входными данными, фактическим и ожидаемым выходом будет полезен. –

+0

Спасибо за внимание, Мартин. Я как-то испортил дату ввода. – TommyF

ответ

3

Похоже, что ваша опубликованная строка не имеет ошибки. Просто проверьте нижеприведенное решение, чтобы убедиться, что результат такой же.

Примечание: Просто пытайтесь устранить любую возможность нерелевантного выпуска в связи с датой. Для Swift вы можете использовать.

let calender = NSCalendar.currentCalendar() 
let dateComponent = calender.components(NSCalendarUnit.WeekOfYearCalendarUnit | NSCalendarUnit.DayCalendarUnit | NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit, fromDate:NSDate()) 

println ("Week: = \(dateComponent.weekOfYear)") 

Поэтому ответ должен быть, как показано ниже:

Week: = 4 
+1

Но код в вопросе тоже должен работать ... –

+0

Да, просто пытаюсь подтвердить, есть ли ошибка в myDate :) – bllakjakk

+1

Прошу прощения, ребята! Я как-то испортил дату ввода :( Ваше решение работает отлично, bllakjakk. Следовательно, это то же самое, что и мой однострочный шрифт в моем вопросе;) Спасибо за ваши усилия, Martin R – TommyF

0

Используйте этот код

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitWeekOfMonth fromDate:[NSDate date]]; 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSInteger month = [components month]; 
    NSInteger year = [components year]; 
    NSInteger day = [components day]; 
    NSLog(@"%ld",(long)[components weekOfMonth]); 
1

Попробуйте:

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitWeekOfMonth fromDate:[NSDate date]]; 
NSInteger curr_month = [components month]; 
NSInteger curr_year = [components year]; 
NSInteger curr_date = [components day]; 
NSLog(@"%d %d %d, \n Week no: %ld",curr_date, curr_month,curr_year, (long)[components weekOfMonth]); 

Выход есть: 2015-01-22 18 : 19: 40,209 Образец [38734: 3031191] 22 1 2015,

Неделя: 4