2013-06-12 4 views
1

Я работаю над NSDate, и я новичок в нем. У меня есть дата начала и дата окончания, начиная от пользователя. И это 2013-01-01 and 2013-02-19. Когда я пытаюсь отобразить в консоли, он показывает мне 2012-12-31 18:30:00 +0000. Так что вы можете сказать 5:30 является gap.So я добавлять интервал времениконвертировать NSDate в часовой пояс GMT

startDate = [aStartdDate dateByAddingTimeInterval:19800]; 
endDate = [aEndDate dateByAddingTimeInterval:19800]; 

Мой вопрос, когда я пытаюсь получить текущую неделю, используя 2012-12-31 18:30:00 +0000 даты, она показывает мне correctly.But, когда я использую 2013-02-01 00:00:00 +0000 дату его показывает мне общее количество недель в месяце. Пожалуйста, помогите мне. Спасибо.

+0

как вы получаете номер недели, можете ли вы опубликовать этот код? –

+0

с использованием этого кода - NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar]; NSRange weekRange = [calendar rangeOfUnit: NSWeekCalendarUnit inUnit: NSMonthCalendarUnit forDate: date]; int weeks = week range.length; – user2470111

+0

Вам нужно отделить концепцию 'NSDate' и часовых поясов в вашем сознании, они ** не связаны ** – borrrden

ответ

1

Временные интервалы не должны быть частью вашей модели. Это проблема с презентацией.
Ваша модель всегда должна использовать общий часовой пояс по умолчанию. Если вы укажете дату своим пользователям, примените NSDateFormatter, который использует specific timezone.

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

Смежные вопросы