0

時間を取得しようとすると、期待値が得られません。

これを実行すると、時刻は 19:59 でした。また、timeDifferenceString の値は 71976.894206 でした。これが今の時代だと思います。71976 / 3600 = 19,99 h 0,99 * 60 = 59,4 m 0,4 * 60 = 24 秒
と計算すると、19:59:24 の 時間が得られます。しかし、現在の時刻ではなく、1回目と2回目の差を秒単位で取得したいと思います。





ボタンを押した(長押しした)時間と、ボタンが押されていない時間だけを取得したい(ボタンを押すと
最初に開始し、他のボタンを押すと停止する)。

- (IBAction)pressTheButton:(id)sender {
NSDate * now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm:ss:SSS"];
NSString *currentTime = [formatter stringFromDate:now];    

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components; //= [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
[components setHour:10];

NSDate* firstDate = [NSDate date];
NSString *getTime = [formatter stringFromDate:now];

getTime = [formatter stringFromDate:firstDate];

if (iX==0)
{
    components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
    firstDate = [calendar dateFromComponents:components];
    getTime = [formatter stringFromDate:firstDate];
    //firstDate = [NSDate date];//[dateFormatter dateFromString:@"00:01:00:090"];
}

components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:now];
//NSDate* secondDate = [dateFormatter dateFromString:@"10:01:02:007"];
NSDate * secondDate = [calendar dateFromComponents:components];
getTime = [formatter stringFromDate:firstDate];

NSTimeInterval timeDifference = [firstDate timeIntervalSinceDate:secondDate];
NSString *timeDifferenceString = [NSString stringWithFormat:@"%f", timeDifference];

timeDiff[iX] = [timeDifferenceString intValue];
[timeLabel setText:timeDifferenceString];
iX++;
}

私の問題に対するより良い解決策があれば、助けてください。

4

1 に答える 1

2

ここでUIControlEventTouchDown、UIControlEventTouchUpInsideを見てください:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIControl_Class/Reference/Reference.html

次に、ある種の ivar またはプロパティ (UIControlEventTouchDown) を押したときの NSDate と、ボタンを離したとき (UIControlEventTouchUpInside または UIControlEventTouchUpOutside) の NSDate を保存し、その日付で -timeIntervalSinceDate: を呼び出すとします。したがって、おおよそ次のようになります。

- (IBAction)pressedDown:(id)sender {
    self.pressedDownDate = [NSDate date];
}

- (IBAction)touchedUp:(id)sender {
    NSDate *now = [NSDate date];
    NSLog(@"Time passed: %d", [now timeIntervalSinceDate:self.pressedDownDate]);
}
于 2013-07-30T19:48:02.037 に答える