Как я могу принять разницу между двумя таймингами в iphone?

I have an application in which i need to show a label in the tableview as Xseconds ago and xminutes&yseconds ago,X hrs ago like that.i am doing like this `

NSString *todaysdateString=[dict objectForKey:@"sendingtime"];

NSString *time = todaysdateString;
NSString*todaysdateString1=[NSString stringWithString: @" "];

NSDate *date1;
NSDate *date2;
//{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
date1 = [formatter dateFromString:time];
date2 = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]];
[formatter release];
//}
NSTimeInterval interval = [date1 timeIntervalSinceDate: date2];
float seconds = interval;
float hour = interval/3600;
float minute =(interval - hour*3600)/60;
NSLog(@"%02.0f,%02.0f,%02.0f",hour, minute, seconds);

`Но это не даст мне желаемых ответов, я получаю как -0,00, -297, что совершенно неверно. Может кто-нибудь указать мне, где я иду не так.

0
nl ja de
просто пройдите код .... pls date1 = [formatter dateFromString: time];
добавлено автор hacker, источник
какая у вас ценность для даты1, даты2 и интервала?
добавлено автор Anoop Vaidya, источник
я хотел знать, после того, как он принял дату и после форматирования.
добавлено автор Anoop Vaidya, источник

2 ответы

Используйте NSCalendar для этого, возможно, этот код поможет вам

NSCalendar *c = [NSCalendar currentCalendar];
NSDateComponents *components = [c components:NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit
                                    fromDate:initialDate
                                      toDate:endDate
                                     options:0];

and in the components variables you will have the differences, get it back using: components.day, components.minute and components.second

1
добавлено

Поскольку ваши секунды отрицательны, вы должны поменять свою дату здесь

NSTimeInterval interval = [date1 timeIntervalSinceDate: date2];

к:

NSTimeInterval interval = [date2 timeIntervalSinceDate: date1];

И может делать так:

NSInteger intervalInt=interval;

NSInteger seconds = intervalInt % 60;
NSInteger minutes = (intervalInt/60) % 60;
NSInteger hours = intervalInt/(60 * 60);
NSString *result = [NSString stringWithFormat:@"%02ld:%02ld:%02ld", hours, minutes, seconds];
0
добавлено
что должно быть дата3 здесь?
добавлено автор hacker, источник
только один интервал редактирования (int)% 60
добавлено автор hacker, источник
u записаны как интервал% 60, который даст u «недопустимые операнды для двоичного выражения», поскольку тип интервала различен. Это означает, что я имел в виду, я надеюсь, что вы недоукомплектовываете
добавлено автор hacker, источник
Извините date1, как упоминалось swap (1 с 2), он получил опечатку: p
добавлено автор Anoop Vaidya, источник
@hacker: я не понял, если вы можете объяснить ...
добавлено автор Anoop Vaidya, источник
ohh shitt ... я только компилировал и забыл NSInterval дает double и% работает с целыми числами.
добавлено автор Anoop Vaidya, источник
теперь проверьте мой код, это хорошо?
добавлено автор Anoop Vaidya, источник
-1 почему причина пожалуйста.
добавлено автор Anoop Vaidya, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.