Ios NSTimeInterval并查看日期是否超过过去的一小时
我觉得日期很不直观,也很混乱,所以就这样吧 我有一个带有日期的事件数组,如果任何一个事件的日期超过一个小时,我想将其删除 我使用的代码是:Ios NSTimeInterval并查看日期是否超过过去的一小时,ios,objective-c,nsdate,Ios,Objective C,Nsdate,我觉得日期很不直观,也很混乱,所以就这样吧 我有一个带有日期的事件数组,如果任何一个事件的日期超过一个小时,我想将其删除 我使用的代码是: NSDate *now = [NSDate date]; Events *event = mutableEventsArray[i]; if (event.date!=nil) { NSTimeInterval sinceNow = [event.date timeIntervalSinceNow]; NSLog(@"sinceNow%@",
NSDate *now = [NSDate date];
Events *event = mutableEventsArray[i];
if (event.date!=nil) {
NSTimeInterval sinceNow = [event.date timeIntervalSinceNow];
NSLog(@"sinceNow%@",sinceNow);
NSTimeInterval hourInterval = 3600;
if (sinceNow<hourInterval) {
[mutableEventsArray removeObjectAtIndex:i];
}
}
日志事件。日期显示:2018年5月7日星期一11:35:42
差别是17分钟或大约1020秒,远远少于一小时
但是,当我将时间间隔sinceNow记录到console时,我得到一个负数:sinceNow-97005.383634。这个数字大于3600,更不用说1020了。因此,计算NSTimeInterval sinceNow=[event.date timeIntervalSinceNow]似乎有问题代码>
我认为使用NSTimeInterval
并没有考虑到日光节约时间和闰年,但我不认为这在这里适用
如果您对可能出现的问题有任何建议,我们将不胜感激。-[NSDate timeintervalncesnow]
为过去的日期返回负值,为将来的日期返回正值。
要检查日期是否超过一小时前,您应该检查TimeIntervalenceNow是否为<-3600-[NSDate TimeIntervalenceNow]
为过去的日期返回负值,为未来的日期返回正值。
要检查日期是否超过一小时前,您应该检查TimeIntervalenceNow是否为<-3600如果您将计算转过来,您可能会更高兴:
NSTimeInterval ageOfEvent = [now timeIntervalSinceDate:event.date];
这给了ageOfEvent
您期望的含义:它是自事件发生以来经过的时间,以秒为单位。那么你可以说
if (ageOfEvent > 3600) {
[mutableEventsArray removeObjectAtIndex:i];
}
如果你把计算转过来,你可能会更高兴:
NSTimeInterval ageOfEvent = [now timeIntervalSinceDate:event.date];
这给了ageOfEvent
您期望的含义:它是自事件发生以来经过的时间,以秒为单位。那么你可以说
if (ageOfEvent > 3600) {
[mutableEventsArray removeObjectAtIndex:i];
}
请注意,sinceNow
是-97005.383634
。那是个负数。这意味着日期早于“现在”。而且比“现在”早了26个小时。我发现日期非常不直观和混乱——你可能会发现我写的很有用。任何时候你认为你应该手工做约会数学,你可能应该访问这个网站,然后重新考虑你的编码选择。(虽然你在这里可能很酷,>3600检查——只是,要小心)。注意sinceNow
是-97005.383634
。那是个负数。这意味着日期早于“现在”。它比“现在”早了大约26个小时。“我发现日期非常不直观和混乱”-你可能会发现我写的东西很有用。任何时候你认为你应该手工计算日期,你可能应该访问这个网站,然后重新考虑你的编码选择。(虽然您在这里可能很酷,但使用>3600的支票——只是要小心)。