2011-07-02 49 views
1

我有2個文本字段,用戶可以插入2個時間(即12.00pm和15.00pm)和返回小時(即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

之後留在秒

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

,並獲得秒後留下這樣你寫:

NSInteger的秒=分鐘%60;


編輯

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

如果你想設置的時間標籤上。

+0

確定,但如果我想設置我的標籤,我需要轉換爲整數......可以請你改變我的代碼? – mat

+0

@Mattia:你的意思是一個字符串?如果是,請檢查答案。 – 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; 
}