Cocoaで時差を計算する
-
19-08-2019 - |
質問
%H%M%S(E.G.161500)の形式で2つの時間値を取得しました
これらの値はテキストベースの整数です。
Cocoaには、60秒および分スケールを使用してこれら2つの整数の差を計算する単純な関数がありますか?
その場合
time 1 = 161500
time 2 = 171500
timedifference = 003000
解決
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HHmmss"];
NSDate *date1 = [dateFormatter dateFromString:@"161500"];
NSDate *date2 = [dateFormatter dateFromString:@"171500"];
NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; // diff = 3600.0
他のヒント
日付を操作するためのクラスはNSDate
です。時間間隔を取得する方法は-timeIntervalSinceDate:
です。結果はNSTimeInterval
値です。これは、間隔を秒単位で表すdouble
です。
日付が 2001-03-24 10:45:32 +0600 としてフォーマットされている場合、NSString
から+dateWithString:
を使用して<=>オブジェクトを作成できます。
このコードを試してください。
- (NSTimeInterval)intervalBetweenDate:(NSDate *)dt1 andDate:(NSDate *)dt2 {
NSTimeInterval interval = [dt2 timeIntervalSinceDate:dt1];
NSLog(@"%f",interval);
return interval;
}
NS NSNumberでラップされたNSTimeInterval(秒を表すdouble)として、合計秒数を返すようにします。そこから簡単に差を引き、作成した同じNSFormatterクラスを使用して表示することができます。値の解析と表示の両方で、秒から時間:分:秒または任意の形式に変換するコードを記述する責任があります。また、アプリケーションにとって意味がある場合は、これらの値をmouvicielのようなNSDateに変換することもできます。通常、1970年1月1日(NSDateにはこれを行うためのメソッドがあります)の基準日との時差を常に保存することに注意してください。
所属していません StackOverflow