2013-06-02 6 views
-1

Как добавить длительность в datetime. Например, 30 минут.Добавить продолжительность в NSDate

NSString *str = @"31-06-2013 11:45 pm"; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm a"]; 
NSDate *startTime = [dateFormatter dateFromString: str]; 
NSDate *endTime = [startTime dateByAddingTimeInterval:60 * 30]; 

Дисплей Выходной 31-06-2013 11:45 вечера но правильно должно быть 01-06-2013 12:15 утра

+1

Это дубликат многих, многих вопросов, поэтому я не могу найти представителя. Нижняя строка - вы создаете дату из строки на время, но не предоставляете для нее часовой пояс - обычно она будет по умолчанию для UTC. Затем вы, вероятно, печатаете 'endTime' с' NSLog' или через 'po' в отладчике - это напечатает время в UTC. Таким образом, вам необходимо: 1) предоставить часовой пояс для форматирования даты перед вызовом 'dateFromString:' и 2) создать другой формат даты, а также ваш часовой пояс, чтобы получить нужный вам результат. –

ответ

0

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

NSCalendar*  calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
    NSDateComponents *c = [[[NSDateComponents alloc] init] autorelease]; 
    c.minute = 30; 
    NSDate* endTime = [calendar dateByAddingComponents:c toDate:startTime options:0]; 
    NSString* formattedDateString = [dateFormatter stringFromDate:endTime]; 
+0

Спасибо. Я пытаюсь использовать метод выше его show 2000-01-01 05:49:00 +0000 и хочу отображать dd-MM-yyyy hh: mm формат. – user3491942

+0

см. Мое редактирование выше. Затем вы можете форматировать дату, используя NSDateFormatter, так же, как вы форматировали startTime, но используя stringFromDate вместо dateFromString. – kushyar

+0

Спасибо kushyar.It реально рабочие. – user3491942

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