0

我有一个应用程序,我需要在表格视图中显示一个标签,如 X 秒前和 x 分钟和 y 秒前,X 小时前,就像那样。我正在这样做`

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那是完全错误的。任何人都可以指出我哪里出错了..

4

2 回答 2

1

使用 aNSCalendar来做到这一点,也许这段代码可以帮助你

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

components变量中你会有差异,使用components.day:components.minutecomponents.second

于 2013-01-29T09:05:57.210 回答
0

由于您的秒数为负数,您应该在此处交换您的日期

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];
于 2013-01-29T09:08:24.687 回答