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的主要内容,如果未能解决你的问题,请参考以下文章

倒数计时器自动启动

运送时间的每日倒数计时器

如何从 Android 应用程序与服务器同步倒数计时器

如何使用 asp.net 创建 2 分钟倒数计时器

如何使用倒数计时器停止游戏 - iOS [SWIFT] -

iOS中都有哪些倒计时App可以在锁屏时显示?