2012-10-19 63 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

这是一个不正确的日期格式的日期,作者正在使用.. –

相关问题