1

私は2回あります:

10:23:51
10:31:54

両方の値は、SQLite データベースに文字列として格納されます。

これら 2 つの時間の差を hh:mm 形式で見つけたいと思います。
これどうやってするの?

私はたくさん検索しました。しかし、適切な解決策が見つかりません。手伝ってください。ありがとう。

編集: 基本的に私は2つの配列を持っています:
InTimeArrayOuttimeArray。メソッド では、および配列内のすべてのエントリをviewDidload取得しています。intimeIntimeArrayOuttimeouttime

今、1行目のようにテーブルビューで値を1つずつ渡しています

 IntimeArray[0]
 OuyTimeArray[0]

2 行目:

 IntimeArray[1]
 OuyTimeArray[1]

intimeここで、1 行目とouttimeHH:MM 形式の違いを数えたいと思います。
私は本当に混乱しています。

4

3 に答える 3

1

最初に、この方法を使用して両方の文字列を日付形式に変更する必要があります:-

- (NSDate *)dateFromString:(NSString *)string;

その後、両方の日付の間の秒数を計算する必要があります。それだけです。

または、これを行う別の簡単な方法があります。すなわち

最初に次のように両方の配列から日付を取得します:-

NSDate *eventStartDate = [IntimeArray objectAtIndex:indexpath.row];

NSDate *eventEndDate = [OuyTimeArray objectAtIndex:indexpath.row];

次に、次のように両方の日付の差を計算します:-

NSTimeInterval startTimeInterval = [eventStartDate timeIntervalSinceDate:currentDate];

お役に立てば幸いです:)

于 2012-05-04T12:06:54.680 に答える
1

あなたはそれを見ることができます:

-(NSDate *)dateFromString:(NSString *)string
{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormat setLocale:locale];
[dateFormat setDateFormat:@"HH:mm:ss"];

NSDate *date1 = [dateFormat dateFromString:string];  
if(!date1) date1= [NSDate date];
[dateFormat release];
[locale release];

return date1;
}

これにより、NSDate が有効になり、両方を NSDates に変更すると、 this を見て違いを知ることができます

これがあなたに役立つことを願っています..

于 2012-05-04T12:01:01.207 に答える
0

これを試して:

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"HH:mm:ss"];

NSDate *d1 = [formatter dateFromString:IntimeArray[0]];
NSDate *d2 = [formatter dateFromString:OuyTimeArray[0]];

NSTimeInterval ti = [d2 timeIntervalSinceDate:d1];
float hours = floor(ti / 3600);
float minutes = floor((ti - hours*3600) / 60);

NSString *s = [NSString stringWithFormat:@"%02.0f:%02.0f",hours,minutes];

あなたの与えられた例では、NSLog(@"Time passed: %@",s);が出力されます00:08

于 2012-05-04T12:59:06.727 に答える