Find exact difference between two dates

前端 未结 4 868
臣服心动
臣服心动 2021-01-22 19:48

I want some changes in the date comparison.

In my application I am comparing two dates and getting difference as number of Days, but if there is only one day difference

4条回答
  •  不要未来只要你来
    2021-01-22 20:05

    Here a prefect solution to find difference between two dates

    - (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;
    }
    

    and call above function with two parameter as NSDate

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

    note:: postDate is FirstDate & second date is current date..

提交回复
热议问题