计算经过充分友好的时候我试图创建一个计算的格式全部时间的方法:
0 Year 0 month 1 day 1 hour 15 minutes 5 seconds
从两个NSDates
我传递了以下两个日期的例子。应该是1小时15分5秒。
NSString * startDate = @"2016-08-24 10:00:00";
NSString * endDate = @"2016-08-24 11:15:05";
NSLog(@"Total Time: %@", [self caluculateTimeFrom:startDate endDate:endDate]);
的方法做计算
- (NSString*) caluculateTimeFrom:(NSString*)startDate endDate:(NSString*)endDate {
NSLog(@"Start Date: %@", startDate);
NSLog(@"End Date: %@", endDate);
if (startDate == nil || endDate == nil) {
return nil;
}
NSString * returnDate = @"";
NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];
[dateFormater setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate * date1 = [dateFormater dateFromString:startDate];
NSDate * date2 = [dateFormater dateFromString:endDate];
float totalElapsedSeconds = roundf([date2 timeIntervalSinceDate:date1]);
NSLog(@"totalElapsedTime: %f", totalElapsedSeconds);
if (totalElapsedSeconds < SECOND) {
returnDate = @"0 seconds";
return returnDate;
}
float days = totalElapsedSeconds/(60 * 60 * 24);
totalElapsedSeconds -= days * (60 * 60 * 24);
float hours = totalElapsedSeconds/(60 * 60);
totalElapsedSeconds -= hours * (60 * 60);
float minutes = totalElapsedSeconds/60;
returnDate = [NSString stringWithFormat:@"%f days %f hours %f minutes", days, hours, minutes];
return returnDate;
}
我已经看过了SO quiestions但theyu一切似乎只吐出了1个实例。即1天前,但不是剩余的完整字符串。
我在做什么错? 请不要使用外部的Github框架或CocoaPods。作为最people recommend不完成我想要的。
更新用户使用罗布NSDateComponentsFormatter
为了得到我想要这里的风格是未来使用的代码提示。在iOS 8+这只能
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleFull;
formatter.allowedUnits = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
一旦你有你的两个'NSDate'对象,使用'NSDateComponentsFormatter'建立您的字符串的时间已过去。 – Rob
这不起作用。它吐出'剩下大约75分钟' –
@Firemarble你需要正确配置NSDateComponentsFormatter来得到你想要的。 – rmaddy