2010-12-28 12 views
2

日付の比較にいくつかの変更が必要です。2つの日付の正確な違いを確認

私のアプリケーションでは、2つの日付を比較して、日数として違いを得ていますが、1日の差がある場合、システムは0の日差を示しています。

NSDateFormatter *date_formater=[[NSDateFormatter alloc]init]; 
[date_formater setDateFormat:@"MMM dd,YYYY"]; 

NSString *now=[NSString stringWithFormat:@"%@",[date_formater stringFromDate:[NSDate date]]]; 
LblTodayDate.text = [NSString stringWithFormat:@"%@",[NSString stringWithFormat:@"%@",now]]; 

NSDate *dateofevent = [[NSUserDefaults standardUserDefaults] valueForKey:@"CeremonyDate_"]; 
NSDate *endDate =dateofevent; 

NSDate *startDate = [NSDate date]; 

gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
unsigned int unitFlags = NSDayCalendarUnit; 

NSDateComponents *components = [gregorian components:unitFlags fromDate:startDate toDate:endDate options:0]; 

int days = [components day]; 

私たちは、比較のための時刻として00:00:00を作る場合、それは、私が正しいか間違っている私は知らない私に適切な答えを示すことが、いくつかの解決策を見つけました。

答えて

4

私は通常秒で差を見つけ、ceil(diffInSeconds/86400)を計算します。

+0

ありがとう、それは働いた。 –

+0

ありがとう、このヒントを教えてください。 – EmptyStack

4

これは正しくないと思います。時刻は00:00:00です。

あなたが違いを得るのは、それが四捨五入して0日という理由で、24時間未満である可能性があります。これも私のために正常に動作します

-

アレクサンダー・ソリューションは次のようにそのソリューションを使用する権利そうです。

NSDate *endDate=[dateFormat dateFromString:now]; 
     NSTimeInterval interval = [CeremonyDate timeIntervalSinceDate:endDate]; 
     int diff=interval/86400;//for converting seconds into days. 

あなたがここに来る人物を丸めるのと同じ問題ですが、あなたはそれを過小評価することができます。

+0

ありがとう私はそれをチェックします –

0

このコードを試して、異なる2つの日時を取得してください。

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
     [dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]]; 
     [dateFormatter setDateFormat:@"mm:ss"]; 

     NSDate* firstDate = [dateFormatter dateFromString:@"04:45"]; 
     NSDate* secondDate = [dateFormatter dateFromString:@"05:00"]; 

     NSTimeInterval timeDifference = [secondDate timeIntervalSinceDate:firstDate]; 
     NSLog(@"%f",timeDifference); 

このコードが役に立つと願っています。ここで

0

二つの日付

- (NSString *)calculateDuration:(NSDate *)oldTime secondDate:(NSDate *)currentTime 
{ 
    NSString *timeSincePost; 
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
    NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:oldTime toDate:currentTime options:0]; 

    NSInteger year = [dateComponents year]; 
    NSInteger month = [dateComponents month]; 
    NSInteger day = [dateComponents day]; 
    NSInteger hour = [dateComponents hour]; 
    NSInteger minute = [dateComponents minute]; 
    NSInteger second = [dateComponents second]; 

    if (year) { 
     timeSincePost = [NSString stringWithFormat:@"%ld%@", (long)year,[[kAppDelegate languageBundle] localizedStringForKey:@"y" value:@"" table:nil]]; 
    } 
    else if (month) { 
     timeSincePost = [NSString stringWithFormat:@"%ld%@", (long)month,[[kAppDelegate languageBundle] localizedStringForKey:@"M" value:@"" table:nil]]; 
    } 
    if(day) { 
     timeSincePost = [NSString stringWithFormat:@"%ld%@", (long)day,[[kAppDelegate languageBundle] localizedStringForKey:@"d" value:@"" table:nil]]; 
    } 
    else if(hour) { 
     timeSincePost = [NSString stringWithFormat: @"%ld%@", (long)hour,[[kAppDelegate languageBundle] localizedStringForKey:@"H" value:@"" table:nil]]; 
    } 
    else if(minute) { 
     timeSincePost = [NSString stringWithFormat: @"%ld%@", (long)minute,[[kAppDelegate languageBundle] localizedStringForKey:@"m" value:@"" table:nil]]; 
    } 
    else if(second) 
     timeSincePost = [NSString stringWithFormat: @"%ld%@", (long)second,[[kAppDelegate languageBundle] localizedStringForKey:@"s" value:@"" table:nil]]; 

    return timeSincePost; 
} 

の違いを見つけて、ノートNSDateように2つのパラメータで機能上

NSString *duration = [self calculateDuration:postDate secondDate:[NSDate date]]; 
lblPostTime.text = duration; 

を呼び出すための知事ソリューション:: POSTDATEはFirstDate &秒です日付は現在の日付です。

関連する問題