2011-07-02 8 views
1

사용자가 두 시간 (예 : 오후 12시와 오후 15시)을 삽입 할 수있는 텍스트 필드 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 분 = 임시 직원/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; 
}