2011-06-30 28 views
1

我有個約會來自數據庫的,在這種格式2011-11-30 18點38分〇〇秒+0000,我需要從now.How它是可能的時間差這個我在做什麼: -如何獲得小時的日期差異? ?

NSDate* pDateEnd; 



    NSLog(@"PDateEnd=%@",pDateEnd); //it has value=2011-11-30 18:38:00 +0000 

NSTimeInterval secForDeal = [pDateEnd timeIntervalSinceNow]; 

NSLog(@"secForDeal=%i",secForDeal); 
if(secForDeal < 0) 
    return nil; 
////// 
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit; 
NSCalendar *currentCalendar = [NSCalendar currentCalendar]; 

NSDateComponents* pRemainingDate = [[[NSDateComponents alloc] init] autorelease]; 

[pRemainingDate setHour:0]; 

[pRemainingDate setMinute:0]; 

[pRemainingDate setSecond:secForDeal]; 

//preparing date 
NSDate *date = [currentCalendar dateFromComponents:pRemainingDate]; 
//again splitting date to components 
NSDateComponents *comps = [currentCalendar components:unitFlags fromDate:date]; 
/////Generating the date 
NSString* pRetTimeRemaining = [NSString stringWithFormat:@"%i Year %i Month %i days %i Hr %i Min",[comps year],[comps month],[comps day],[comps hour],[comps minute]]; 
/////// 
NSLog(@"pRetTimeRemaining=%@",pRetTimeRemaining); 
return pRetTimeRemaining; 

請告訴我們是否有任何錯誤或其他方式來做到這一點,謝謝。

+0

你沒有得到正確的答案[這裏](http://stackoverflow.com/questions/5866852/how-can-i-get-the-date-difference)? –

回答

2

請嘗試以下代碼以獲取兩天之間的天數,分鐘,小時,月數。

// The time interval 
NSTimeInterval theTimeInterval = 326.4; 

// Get the system calendar 
NSCalendar *sysCalendar = [NSCalendar currentCalendar]; 

// Create the NSDates 
NSDate *date1 = [[NSDate alloc] init]; 
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1]; 

// Get conversion to months, days, hours, minutes 
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; 

NSDateComponents *conversionInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0]; 

NSLog(@"Conversion: %dmin %dhours %ddays %dmoths",[conversionInfo minute], [conversionInfo hour], [conversionInfo day], [conversionInfo month]); 

[date1 release]; 
[date2 release]; 

請嘗試以下代碼以獲取兩個日期之間的天數。

-(int)howManyDaysHavePast:(NSDate*)lastDate today:(NSDate*)today { 
    NSDate *startDate = lastDate; 
    NSDate *endDate = today; 
    NSCalendar *gregorian = [[NSCalendar alloc] 
          initWithCalendarIdentifier:NSGregorianCalendar]; 
    unsigned int unitFlags = NSDayCalendarUnit; 
    NSDateComponents *components = [gregorian components:unitFlags 
               fromDate:startDate 
                toDate:endDate options:0]; 
    int days = [components day]; 
    return days; // multiply by 24 for get remain hrs. 
} 

或者fololw

+0

謝謝,但我只需要剩餘時間。請告訴我,如果有可能 –

+0

檢查我更新的答案。 –

2

您可以從下面的代碼獲取小時。

int interval = [invoiceDate timeIntervalSinceDate:date]; 
int hour = interval/3600; 
相關問題