1

「10:10:12」、「12:10:34」、「05:23:11」のような時間文字列の配列があります。その配列、つまり「05:23:11」からless(min)時間を計算し、そこから10分を引きます。結果を同じ形式で保存します。誰かがそれを行う方法を知っているなら、私を助けてください。彼/彼女に感謝します。少し早いですがお礼を。

4

3 に答える 3

2

まず、文字列を昇順で並べ替えます。文字列の配列が呼び出されarrayOfTimeStringsた場合、次のように正しく順序付けられた配列を取得できます。

NSArray *array = [arrayOfTimeStrings sortedArrayUsingSelector:@selector(compare:)];

次に、最初のアイテムを取得します。

NSString *firstTimeString = (NSString *)[array objectAtIndex:0];

NSDate今、あなたはそれを次のように変換することができます:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm:ss"];
NSDate *dateFromFirstString = [formatter dateFromString:firstTimeString];

NSString最後に、その日付から600秒を引き、それを:に戻すことができます。

NSDate *tenMinutesBeforeDate = [NSDate dateWithTimeInterval:-600 sinceDate:dateFromFirstString];
NSString *tenMinutesBeforeString = [formatter stringFromDate:tenMinutesBeforeDate];

独自の並べ替えアルゴリズムを考え出す必要がないため、これは他のソリューションよりもはるかに簡単です。

お役に立てれば。

于 2012-06-05T15:06:38.497 に答える
1

日付のある配列が大きい場合は、次のように実行できます。

    NSArray * arrayWithTime = [NSArray array];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
   [dateFormatter setDateFormat:@"HH:mm:ss"];

 NSSortDescriptor *d = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES comparator:^NSComparisonResult(id obj1,id obj2){ 


NSDate *date1 = [dateFormatter dateFromString:obj1];
NSDate *date2 = [dateFormatter dateFromString:obj2];

return [date1 compare:date2];} ];

NSArray * comparators = [NSArray arrayWithObject:d];
NSArray * final = [arrayWithTime sortedArrayUsingDescriptors:comparators];

次に、最終配列の最初の項目を取得し、10分を減算します

于 2012-06-05T15:11:59.340 に答える
0

それを行うには多くの方法がありますが、私の頭に浮かぶ最初のことはこれです:

NSString *strDate1 = @"10:10:12";
NSString *strDate2 = @"05:23:11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"HH:mm:ss"];
NSDate *date1 = [dateFormatter dateFromString:strDate1];
NSDate *date2 = [dateFormatter dateFromString:strDate2];

//to compare dates
if([date1 compare:date2] == NSOrderedAscending)
{
    //do what you want
}

//to subtract 10 min form a date
NSDate *date3 = [date2 dateByAddingTimeInterval:-60*10];

お役に立てば幸いです。

于 2012-06-05T15:01:35.923 に答える