第二天午夜之后



我有一个非常简单的案例,但由于某种原因,我找不到正确的方法来处理它,因为我在iDev中的"初学者"水平。用户在使用我的应用程序期间将有一天的限制。在一定数量的用户操作之后,我在NSUserDefaults中设置了限制。现在我认为应该是NSDate值,但我不确定。每次用户请求某些操作时,应用程序必须检查是否没有限制。如何正确检查?例如,今天上午9点,用户超出了限制,应用程序必须限制午夜的任何操作。第二天凌晨0点01分,在检查限额后,它必须是"绿色"。

有点混乱,我知道:(

这是Swift的解决方案。该函数使用NSDateComponents类将时间设置为第二天的第一分钟:

public class func getTomorrow() -> NSDate {
    let cal = NSCalendar.currentCalendar()
    let today = NSDate()
    let dateComp = cal.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: today)
    dateComp.day = dateComp.day + 1
    dateComp.hour = 0
    dateComp.minute = 1
    dateComp.second = 0
    return cal.dateFromComponents(dateComp)!
}

我还没有检查它是否编译,但应该没问题。

要获得第二天的开始,你可以使用NSCalendar类与2个api:

首先:获取你当前时间的第二天(NSDate):

返回一个新的表示绝对时间的NSDate对象通过将给定的组件添加到给定的日期来计算。

- (NSDate *)dateByAddingComponents:(NSDateComponents *)comps
                            toDate:(NSDate *)date
                           options:(NSCalendarOptions)opts

您的comps参数应该只有Day值= 1,如:

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:1];

然后在第二天的第一个时刻获得NSDate。

返回给定日期的第一个时刻日期

- (NSDate *)startOfDayForDate:(NSDate *)date

最新更新