ios - 如何在午夜不触发 applicationSignificantTimeChange

标签 ios swift time

如何在午夜不触发 applicationSignificantTimeChange,但在所有其他情况下使用它?

这按预期工作,但如何在午夜或之间(23:30 至 00:30)停止它?

func applicationSignificantTimeChange(_ application: UIApplication) {
    NSLog("Application Significant Time Change")
    Manager.setupTime()
}

最佳答案

您无法阻止 applicationSignificantTimeChange 在午夜触发。

From documentation:

Examples of significant time changes include the arrival of midnight, an update of the time by a carrier, and the change to daylight savings time.

解决方法:

您可以像下面这样输入 if 条件来检查当前时间是否在 23:30 - 00:30 之间并忽略它。

func applicationSignificantTimeChange(_ application: UIApplication) {
    let currentTime = Date()
    let midnight = Calendar.current.startOfDay(for: currentTime)
    let thirtyMinsBeforeMidnight = midnight.addingTimeInterval(-30*60)
    let thirtyMinutesAfterMidnight = midnight.addingTimeInterval(30*60)

    if currentTime.timeIntervalSince(thirtyMinsBeforeMidnight) >= 0 && currentTime.timeIntervalSince(thirtyMinutesAfterMidnight) <= 0 {
        // time between 23:30 - 00:30
    }
    else {
        // time is not between 23:30 - 00:30
        // do your stuff
        NSLog("Application Significant Time Change")
        Manager.setupTime()
    }
}

关于ios - 如何在午夜不触发 applicationSignificantTimeChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55268897/

相关文章:

ios - RxSwift,我如何链接不同的可观察对象

ios - 如何将两个参数传给下一个ViewController?

database - 时间依赖,如何?

C++ 时间测量看起来太慢

ios - 使用 SWXMLHash 反序列化 xml 时处理丢失的属性

ios - 如何在 iOS 7.1 中隐藏状态栏?

ios - 如何从 iOS 中的一组 url 预加载图像?

ios - 将渐变应用于虚线 UIBezierPath

ios - 创建所有可能的数组排序案例

C GetTickCount(windows函数)到时间(纳秒)