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

これを行うにはaを使用しNSCalendarてください。おそらくこのコードが役立ちます

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

変数にcomponentsは違いがあり、次を使用して元に戻します: components.daycomponents.minuteおよびcomponents.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 に答える