2011-07-02 4 views
1

私は、ユーザーが2時間(すなわち、12.00pmと15:00pm)を挿入できる2つのテキストフィールドと時間を返すラベル(すなわち3時間)を持っています。私はtimeIntervalSinceDateを使用していますが、私はそれを数秒で取得しています(3時間に等しい10800秒)。どのように時間単位で値を取得できますか?ここにコード:NSDate - timeIntevalSinceDate -

-(IBAction)calcoloBlockTime{ 
    NSString *blockOff = [NSString stringWithFormat:@"%@", [offBlock text]]; 
    NSString *blockIn= [NSString stringWithFormat: @"%@", [inBlock text]]; 
    NSDateFormatter *dateFormatter =[[NSDateFormatter alloc]init]; 
    [dateFormatter setDateFormat:@"HHmm"]; 
    NSDate *dateFromString = [dateFormatter dateFromString:blockOff]; 
    NSDate *dateFromString2 = [dateFormatter dateFromString:blockIn]; 
    NSLog(@"Time elapsed: %f", [dateFromString2 timeIntervalSinceDate:dateFromString]); 
} 

ありがとうございます。あなたは時間にのみ関心がある場合

答えて

3

次のように記述することができます:

NSInteger時間=/3600 10800; //あなたは時間で3600秒

はあなたが分などをしたい場合、あなたはあなたに3600

で除算した後に残っている秒を与えるであろう、10800の係数3600の結果を継続するがあることを知っています

NSInteger temp = 10800%3600;
NSInteger分= temp/60;

そして、あなたが書いたこの後に残っ秒取得する:

NSInteger秒=分60%を、


EDIT

myLabel.text = [NSString stringWithFormat:@"%d hours", hours]; 

あなたはラベルに時間を設定したい場合。

+0

大丈夫ですが、自分のラベルを設定したい場合は、整数に変換する必要があります...コードを変更してもよろしいですか? – mat

+0

@マチア:文字列を意味しますか?はいの場合は、答えをチェックしてください。 – LuckyLuke

1

時間=秒/ 3600;シンプル!そして、それはNSDateから時間を得る方法がないようです。 NSDateComponentsを使うことができますが、あなたの要求にはコストがかかりすぎます。

0

NSDateと現在の間の残り時間の書式設定された日付の文字列を返すクラスメソッドを作成しました。

+(NSString *)TimeRemainingUntilDate:(NSDate *)date { 

    NSTimeInterval interval = [date timeIntervalSinceNow]; 
    NSString * timeRemaining = nil; 

    if (interval > 0) { 

     div_t d = div(interval, 86400); 
     int day = d.quot; 
     div_t h = div(d.rem, 3600); 
     int hour = h.quot; 
     div_t m = div(h.rem, 60); 
     int min = m.quot; 

     NSString * nbday = nil; 
     if(day > 1) 
      nbday = @"days"; 
     else if(day == 1) 
      nbday = @"day"; 
     else 
      nbday = @""; 
     NSString * nbhour = nil; 
     if(hour > 1) 
      nbhour = @"hours"; 
     else if (hour == 1) 
      nbhour = @"hour"; 
     else 
      nbhour = @""; 
     NSString * nbmin = nil; 
     if(min > 1) 
      nbmin = @"mins"; 
     else 
      nbmin = @"min"; 

     timeRemaining = [NSString stringWithFormat:@"%@%@ %@%@ %@%@",day ? [NSNumber numberWithInt:day] : @"",nbday,hour ? [NSNumber numberWithInt:hour] : @"",nbhour,min ? [NSNumber numberWithInt:min] : @"",nbmin]; 
    } 
    else 
     timeRemaining = @"Over"; 

    return timeRemaining; 
}