Jas*_*oco 35
如果是用于iPhone开发,您还可以监听UIApplicationSignificantTimeChangeNotification.它会在比午夜到来的更多场合发布,但是当您收到一个时,您只需检查您是否在午夜或接近午夜.
对于Mac OS X,您必须执行Tom Dalling建议的操作,但您还应该自己跟踪系统时钟的更改(以更新计时器)以及更改当前时区.
Tom*_*ing 13
没有我知道的通知.每当新的一天开始时,您都可以获得一个计时器:
[[NSTimer alloc] initWithFireDate:midnight
interval:60 * 60 * 24 //one day, in seconds
target:someObj
selector:@selector(someSelector)
userInfo:nil
repeats:YES];
Run Code Online (Sandbox Code Playgroud)
诀窍是让NSDate一套到午夜.查看日期和时间编程指南,了解如何使用日期组件等.
编辑:看到这个问题,如何获得午夜NSDate.
小智 12
从iOS8开始,您还可以直接收听NSCalendarDayChangedNotification.
正如其他人提到的,在 iOS 8 中,您可以使用 NSCalendarDayChangedNotification。关于如何做到这一点,这篇文章为您提供了更多信息。
本质上 NSCalendarDayChangedNotification 要求您转到 appDelegate 文件并在 app 中插入以下代码(改编自 Swift 3 指南):
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.dayChangedOperations(notif:)), name:NSNotification.Name.NSCalendarDayChanged, object:nil)
Run Code Online (Sandbox Code Playgroud)
其中“ViewController”是我的一个类的类名,“dayChangedOperations”是我想要在日期更改时运行的函数的名称。
计算自上次更改以来的天数
请注意,您从中得到的只是日期更改的警报。您不会获得自应用程序上次运行以来的天数。因此,请记住每次运行此函数时将日期保存到 userDefault 中,以便稍后使用它进行比较。
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |