このサイトで見つけた例を常に計算しようとしましたが、どういうわけか毎回値として 0 を取得しています。私はIOSが初めてで、NSDateは私にお金をかけてくれています:)
ボタン「startStop」を押したときに時間Aを記録し、もう一度押したときに時間Bを記録したい。もう一度押す (選択を解除する) と、これら 2 つの日付の間の経過時間を計算する必要があります。これまでのところ、私はこれを持っています:
-(IBAction)buttonClick {
NSDate *startStopDate = [NSDate alloc];
NSDateFormatter *formatter= [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm:ss"];
NSString *currentTime = [[NSString alloc] init];
NSString *currentTime2 = [[NSString alloc]init];
NSDate *start =[ [NSDate alloc]init];
NSDate *stop = [[NSDate alloc] init];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
if (startStop.selected==NO) {
NSLog(@"started");
[startStop setSelected:YES];
startStopDate = [NSDate date];
currentTime = [formatter stringFromDate:startStopDate];
NSLog(@"Current timestarted is %@",currentTime);
startTime.text = currentTime;
start = [formatter dateFromString:currentTime];
}
else {
NSLog(@"Selected");
[startStop setSelected:NO];
startStopDate = [NSDate date];
currentTime2 = [formatter stringFromDate:startStopDate];
NSLog(@"Current time is %@",currentTime2);
stopTime.text = currentTime2;
stop = [formatter dateFromString:currentTime2];
NSUInteger unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [gregorianCalendar components:unitFlags
fromDate:start
toDate:stop
options:0];
NSInteger hours = [components hour];
NSInteger minutes = [components minute];
NSInteger seconds = [components second];
NSLog(@"hello %d, %d, %d", hours, minutes, seconds);
}
}
私のラベルは、押されたときに正しい時間:分出力を提供しますが、それらを日付計算に転送するようには見えません。ご覧のとおり、dateFromString と stringFromDate および複数の日付/文字列オブジェクトを使用してさまざまなバリエーションを試してきましたが、これまでのところ、結果として大きな負の数またはゼロしか得られません。助けていただければ幸いです;)
よろしく、ニック