24 倒数计时器 12PM 每天 iOS
Posted
技术标签:
【中文标题】24 倒数计时器 12PM 每天 iOS【英文标题】:24 Countdown Timer 12PM Everyday iOS 【发布时间】:2014-10-27 23:03:24 【问题描述】:我需要运行一个从每天中午 12 点开始每 24 小时重复一次的计时器。我很难找到正确的方法来做到这一点。如果有人可以发布一些示例代码,我会很高兴!
我让它工作了,我只需要在 NSLog 输入中添加一个计时器。谁能帮我这个?谢谢
//假设:targetTime 在现在之后 NSString *targetTime = @"12:00";
//split our time into components
NSArray *timeSplit = [targetTime componentsSeparatedByString:@":"];
NSUInteger hours = [[timeSplit objectAtIndex:0] intValue];
NSUInteger minutes = [[timeSplit objectAtIndex:1] intValue];
NSDate *now = [NSDate date];
//split now into year month day components
NSCalendar *currentCalendar = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [currentCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:now];
//set our time components from above
[dateComponents setHour:hours];
[dateComponents setMinute:minutes];
NSDate *targetDate = [currentCalendar dateFromComponents:dateComponents];
//ensure target is after now
if ([targetDate timeIntervalSinceDate:now] < 0)
NSDateComponents *day = [[NSDateComponents alloc] init];
[day setDay:1];
targetDate = [currentCalendar dateByAddingComponents:day toDate:targetDate options:0];
NSTimeInterval timeRemaining = [targetDate timeIntervalSinceDate:now];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeRemaining];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSString *formattedDate = [dateFormatter stringFromDate:date];
NSLog(@"hh:mm:ss %@", formattedDate);
【问题讨论】:
你需要它做什么?您是否只想在用户运行应用程序时显示当前倒计时?如果用户在下午 12 点没有运行应用程序,您希望发生什么? 我希望计时器每天倒计时到中午 12 点,然后每天重复。即使应用程序未运行,我也希望它能够正常工作。有人告诉我我需要使用 NSDateFormatter 和 NSTimer,但我不知道如何将它们放在一起。 您确实需要了解有关该系统的更多信息。学习 NSDate、NSCalendar、NSDateComponents、NSDateFormatter(尽管 NSDateFormatter 是您最不需要的课程)。学习 UILocalNotification。学习 NSTimer。没有人会为你做作业。 【参考方案1】:我认为你运气不好。当您的应用程序进入后台时,计时器会失效。您需要检查您的应用重新进入前台的时间并启动一个新的计时器,该计时器将在中午触发。
要在您的应用未运行时触发事件,我认为您能做的最好的事情就是 UILocalNotification,它会向用户显示一条消息,让用户可以选择调用您的应用。
如果您为越狱设备构建应用程序,您可能会这样做,但我对越狱开发一无所知。
【讨论】:
我知道这是可能的。我需要使用 NSDateFormatter 计算从现在到下午 12 点的时间,然后使用 NSTimer 使其在应用程序运行时移动。我只是找不到任何有用的代码。 不是 NSDateFormatter、NSCalendar 和 NSTimeComponents。在 Xcode 文档中搜索“日历计算”。关于这个主题有一篇相当不错的文章。以上是关于24 倒数计时器 12PM 每天 iOS的主要内容,如果未能解决你的问题,请参考以下文章