NSTimeIntervalSinceDate在连续几天之间给出86,399秒,为什么?

时间:2018-01-28 12:37:09

标签: ios nstimeinterval

在iOS,Xcode9和Obj-C中,我试图找出两个日期之间的天数已经过了多长时间。我知道NSTimeIntervalSince方法在几秒钟内产生结果。但似乎当我计算连续几天之间的秒数(如11-2-2016和11-3-2016)时,我缩短1秒,产生86,399。如果我计算较大间隔之间的秒数,我总是第二次。

2016年11月2日至2016年4月4日:172,799(两个24小时工作日,但错过了第二个工作日)

2016年11月2日至2016年5月11日:259,199(三个24小时工作日,但错过了第二个工作日)

这是我的代码:

@property (strong, nonatomic) NSDate *firstDate; 
@property (strong, nonatomic) NSDate *secondDate;

@synthesize firstDate, secondDate;

int secondsIntervalFirstDatetoSecondDate = (fabs([firstDate timeIntervalSinceDate:secondDate]));
NSLog(@"seconds between firstDate and secondDate %i", secondsIntervalFirstDatetoSecondDate);

firstDate和secodDate是NSDate 用户使用datePicker输入它们,日期格式设置为

[formatter setDateFormat:@"MM-dd-yyyy"];

我已经找到了答案但却找不到答案 新手的第一篇文章,对任何礼仪错误感到抱歉,我会尝试改进。

1 个答案:

答案 0 :(得分:1)

创建UIDatePicker并将其置于“日期”模式时,时间是创建日期选择器的时间。如果你要创建两个选择器,它们将在稍微不同的时间创建。即使是那些时间的非常小的差异也可能导致1秒的差异。 你永远不应该用这种方式计算时差。一天没有86,400秒。 “在两个时间点之间有多少天”很复杂,你应该使用为它设计的工具:NSDateComponents和NSCalendar。 NSCalendar * calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian]; NSInteger diffInDays = [[calendar components:NSCalendarUnitDay                                     fromDate:[calendar startOfDayForDate:date1]                                       toDate:[calendar startOfDayForDate:date2]                                      选项:0]天];