2012-10-19 62 views
0

我需要計算兩天之間的差異,以分鐘爲單位。計算兩個日期之間差異的問題

NSDate *now = [[NSDate alloc] init]; 

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
    [outputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; 
    [outputFormatter setDateFormat:@"dd/MM/yyyy hh:mm:ss a"]; 

    NSString* dateStringFromDatabase = @"01/01/1900 11:00:00 AM"; 

    NSDate* dateFromString = [outputFormatter dateFromString:dateStringFromDatabase]; 

NSString* a = [outputFormatter stringFromDate:now]; 
    NSDate* b = [outputFormatter dateFromString:a]; 

    NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; 

    unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; 

    NSDateComponents *components = [gregorian components:unitFlags fromDate:dateFromString 
                toDate:b options:0]; 

    int hours = [components hour]; 
    int minutes = [components minute]; 

    self.lblResult.text = [NSString stringWithFormat:@"%i:%i", hours, minutes]; 

但我有以下問題: 對於當前的時間,我得到:

2012-10-21 07:37:09 +0000 // wrong it's two hours late 

當我嘗試投@"01/01/1900 11:00:00 AM"NSDate我得到

1900-01-01 10:00:00 +0000 // also two hours late 

回答

1

您需要設置-dateStyle而不是時間樣式,因爲該字符串中還包含日期。

編輯---

現在,您需要更改-dateFormatdd/MM/yyyy HH:mm:ss a

+0

我不明白有什麼區別?我該怎麼辦?我應該以不同的格式在數據庫中存儲dateTime嗎? – 1110

0

我希望這有助於

NSString *dtString = @"1900-01-01T11:00:00"; 
    dtString = [dtString stringByReplacingOccurrencesOfString:@"T" withString:@" "]; 
    NSDate *today = [NSDate date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; 
    NSString *currentTime = [dateFormatter stringFromDate:today]; 
    NSDate *toTimeDate = [dateFormatter dateFromString:dtString]; 
    NSString *toTime = [dateFormatter stringFromDate:toTimeDate]; 
1

試試這個............ ......

如果您在String中有日期,那麼將其轉換爲日期使用@"dd/MM/yyyy hh:mm:ss a"

NSDate *startDate = ...; 
NSDate *endDate = ...; 

現在日期比較

// Date Comparision 
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; 

unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; 

NSDateComponents *components = [gregorian components:unitFlags fromDate:LastDate 
               toDate:CuurentDate options:0]; 

獲得兩個日期

int months = [components month]; 
int days = [components day]; 
int hours = [components hour]; 
int minutes = [components minute]; 
+0

我不想計算兩個NSDate之間的差異,但只能在幾個小時之間。我的第一個NSDate是1900-01-01 10:00:00 +0000,第二個是2012-10-20 15:50:53 +0000,當我嘗試獲得那些我得到59328354.93之間的分鐘時...如何僅比較那是我需要的全部時間? – 1110

+0

好的.....你有兩個約會。之後,從上面的「日期比較」部分開始回答.......並且意味着.....從int分鐘= [組分分鐘]; 你會得到兩分鐘日期之間的差異.....嘗試上面的代碼....它會這樣做 – Wolverine

+0

這是一個不正確的日期格式的日期,作者正在使用.. –

相關問題