【问题标题】:Can i get a notification, when a new day begins?当新的一天开始时,我可以收到通知吗?
【发布时间】:2010-05-30 13:29:27
【问题描述】:

在 Cocoa 中,是否有我可以注册的通知,通知我新的一天何时开始 - 早上 00h:00min:01s?

【问题讨论】:

    标签: cocoa


    【解决方案1】:

    如果是iPhone开发,也可以收听UIApplicationSignificantTimeChangeNotification。它发布的次数比午夜的到来更多,但是当你收到一个时,你可以简单地检查一下你是在午夜还是接近午夜。

    对于 Mac OS X,您必须按照 Tom Dalling 的建议进行操作,但您还应该自己跟踪 changes to the system clock(以便更新您的计时器)以及 changes to the current time zone

    【讨论】:

    • 感谢两位的回答。看来,我只能接受其中之一,还没有投票赞成。不幸的是,它适用于 Mac OS X - UIApplicationSignificantTimeChangeNotification 正是我想要的......
    【解决方案2】:

    据我所知,没有任何通知。每当新的一天开始时,您都可以设置一个计时器,如下所示:

    [[NSTimer alloc] initWithFireDate:midnight
                             interval:60 * 60 * 24 //one day, in seconds
                               target:someObj
                             selector:@selector(someSelector)
                             userInfo:nil
                              repeats:YES];
    

    诀窍是将NSDate 设置为午夜。查看Date and Time Programming Guide,了解如何使用日期组件等来执行此操作。

    编辑:请参阅 this 问题了解如何获得午夜 NSDate

    【讨论】:

      【解决方案3】:

      从iOS8开始,也可以直接监听NSCalendarDayChangedNotification。

      【讨论】:

      • 谢谢!从 10.9 (Mavericks) 开始,这在 Mac OS X 上也可用。比必须创建一个 NSTimer 要好得多。
      【解决方案4】:

      正如其他人所说,在 iOS 8 中您可以使用 NSCalendarDayChangedNotification。至于如何做到这一点,post 会为您提供更多信息。

      本质上,NSCalendarDayChangedNotification 要求您转到您的 appDelegate 文件并在应用程序中插入以下代码(改编自 Swift 3 指南):

      NotificationCenter.default.addObserver(self, selector: #selector(ViewController.dayChangedOperations(notif:)), name:NSNotification.Name.NSCalendarDayChanged, object:nil)
      

      其中“ViewController”是我的一个类的类名,“dayChangedOperations”是我想在一天变化时运行的函数的名称。

      计算自上次更改以来的天数

      请注意,您从中得到的只是一天发生变化的警报。自应用程序上次运行以来,您没有得到多少天数。所以记得在每次运行这个函数的时候把日期保存到一个userDefault中,这样你以后可以用它来比较。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-26
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 2020-12-30
        • 1970-01-01
        相关资源
        最近更新 更多