gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 00:04:36 25 4
gpt4 key购买 nike

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

11-2-2016 到 11-4-2016:172,799(两个 24 小时的日子,但少了一秒钟)

2016 年 11 月 2 日至 2016 年 11 月 5 日: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"];

我已经搜索过答案,但找不到。
新手第一次发帖,有礼仪错误请见谅,我会努力改进的。

最佳答案

当您创建一个 UIDatePicker 并将其置于“日期”模式时,时间就是创建日期选择器的时间。如果您要创建两个选择器,它们的创建时间将略有不同。在这些时间中,即使是非常小的差异也可能导致 1 秒的差异。

您永远不应该以这种方式计算时差。 There are not 86,400 seconds in a day. “两个时间点之间有多少天”比较复杂,您应该使用为其设计的工具:NSDateComponentsNSCalendar

NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
NSInteger diffInDays = [[calendar components:NSCalendarUnitDay
fromDate:[calendar startOfDayForDate:date1]
toDate:[calendar startOfDayForDate:date2]
options:0] day];

关于ios - NSTimeIntervalSinceDate 在连续几天之间给出 86,399 秒,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48486430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com