2015-02-20 3 views
0

Я хотел бы создать массив объектов времени в 24-часовых часах, которые имеют интервал X минут между ними; и должны проверяться как объекты NSDate/NSTime.Objective C - Создать массив объектов времени с интервалом X минут?

т.е. сгенерированного

00:00, 00:30, 01:00, 01:30, etc

Я хотел бы объекты времени, чтобы быть подтверждаемыми против NSDates.

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

Большое спасибо


Edit: Первая попытка

Хорошо, я сделал попытку на это дал ответ ниже

 NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]]; 
     components.timeZone = [NSTimeZone localTimeZone]; 
     components.hour = 11; 
     components.minute = 0; 
     components.second = 0; 

     NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:components]; 


     NSDateFormatter *timeFormatter = [NSDateFormatter vic_timeFormatter]; 
     [timeFormatter setTimeZone:[NSTimeZone localTimeZone]]; 

     for (int i=1; i<48; i++) { 

      NSUInteger seconds = (1800 * i); 
      NSDate *newDate= [NSDate dateWithTimeInterval:seconds sinceDate:date]; 
      NSLog(@"newDate = %@", newDate); 
      NSString *formatted = [timeFormatter stringFromDate:newDate]; 
      NSLog(@"Formatted = %@", formatted); 
     } 

     timeFormatter=nil; 

я выбрал 48 в 1800 году происходит в 48 раз в 24-часовом цикле

За исключением того, что в моих журналах он всегда заканчивается около 10:30

Для меня идеально было бы работать до 11:30 или 12:00 PM; независимо от времени начала (в приведенном выше сценарии оно начинается с 11:00)

Возврат журнала ниже;

newDate = 2015-02-20 11:30:00 +0000 
Formatted = 11:30 AM 
newDate = 2015-02-20 12:00:00 +0000 
Formatted = 12:00 PM 
newDate = 2015-02-20 12:30:00 +0000 
Formatted = 12:30 PM 
newDate = 2015-02-20 13:00:00 +0000 
Formatted = 1:00 PM 
newDate = 2015-02-20 13:30:00 +0000 
Formatted = 1:30 PM 
newDate = 2015-02-20 14:00:00 +0000 
Formatted = 2:00 PM 
newDate = 2015-02-20 14:30:00 +0000 
Formatted = 2:30 PM 
newDate = 2015-02-20 15:00:00 +0000 
Formatted = 3:00 PM 
newDate = 2015-02-20 15:30:00 +0000 
Formatted = 3:30 PM 
newDate = 2015-02-20 16:00:00 +0000 
Formatted = 4:00 PM 
newDate = 2015-02-20 16:30:00 +0000 
Formatted = 4:30 PM 
newDate = 2015-02-20 17:00:00 +0000 
Formatted = 5:00 PM 
newDate = 2015-02-20 17:30:00 +0000 
Formatted = 5:30 PM 
newDate = 2015-02-20 18:00:00 +0000 
Formatted = 6:00 PM 
newDate = 2015-02-20 18:30:00 +0000 
Formatted = 6:30 PM 
newDate = 2015-02-20 19:00:00 +0000 
Formatted = 7:00 PM 
newDate = 2015-02-20 19:30:00 +0000 
Formatted = 7:30 PM 
newDate = 2015-02-20 20:00:00 +0000 
Formatted = 8:00 PM 
newDate = 2015-02-20 20:30:00 +0000 
Formatted = 8:30 PM 
newDate = 2015-02-20 21:00:00 +0000 
Formatted = 9:00 PM 
newDate = 2015-02-20 21:30:00 +0000 
Formatted = 9:30 PM 
newDate = 2015-02-20 22:00:00 +0000 
Formatted = 10:00 PM 
newDate = 2015-02-20 22:30:00 +0000 
Formatted = 10:30 PM 
newDate = 2015-02-20 23:00:00 +0000 
Formatted = 11:00 PM 
newDate = 2015-02-20 23:30:00 +0000 
Formatted = 11:30 PM 
newDate = 2015-02-21 00:00:00 +0000 
Formatted = 12:00 AM 
newDate = 2015-02-21 00:30:00 +0000 
Formatted = 12:30 AM 
newDate = 2015-02-21 01:00:00 +0000 
Formatted = 1:00 AM 
newDate = 2015-02-21 01:30:00 +0000 
Formatted = 1:30 AM 
newDate = 2015-02-21 02:00:00 +0000 
Formatted = 2:00 AM 
newDate = 2015-02-21 02:30:00 +0000 
Formatted = 2:30 AM 
newDate = 2015-02-21 03:00:00 +0000 
Formatted = 3:00 AM 
newDate = 2015-02-21 03:30:00 +0000 
Formatted = 3:30 AM 
newDate = 2015-02-21 04:00:00 +0000 
Formatted = 4:00 AM 
newDate = 2015-02-21 04:30:00 +0000 
Formatted = 4:30 AM 
newDate = 2015-02-21 05:00:00 +0000 
Formatted = 5:00 AM 
newDate = 2015-02-21 05:30:00 +0000 
Formatted = 5:30 AM 
newDate = 2015-02-21 06:00:00 +0000 
Formatted = 6:00 AM 
newDate = 2015-02-21 06:30:00 +0000 
Formatted = 6:30 AM 
newDate = 2015-02-21 07:00:00 +0000 
Formatted = 7:00 AM 
newDate = 2015-02-21 07:30:00 +0000 
Formatted = 7:30 AM 
newDate = 2015-02-21 08:00:00 +0000 
Formatted = 8:00 AM 
newDate = 2015-02-21 08:30:00 +0000 
Formatted = 8:30 AM 
newDate = 2015-02-21 09:00:00 +0000 
Formatted = 9:00 AM 
newDate = 2015-02-21 09:30:00 +0000 
Formatted = 9:30 AM 
newDate = 2015-02-21 10:00:00 +0000 
Formatted = 10:00 AM 
newDate = 2015-02-21 10:30:00 +0000 
Formatted = 10:30 AM 
+0

Обновите свою петлю, чтобы быть i <50, и она должна делать все 24 часа – AdamM

+0

Большое спасибо. Но иногда это заканчивается на следующий день; скорее я думаю, что это, вероятно, не должно это делать –

ответ

2

Попробуйте использовать метод dateWithTimeInterval. Пример

NSDate *newDate= [NSDate dateWithTimeInterval:1800 sinceDate:yourDate]; 
+0

Это было хорошо и полезно; Я считаю, что мне нужно уволить 1800 не менее 48 раз за 48 раз –

+0

Принял ваш ответ –

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