-6

可能重复:
如何计算两个日期之间的差异?
NSDate,比较两个日期

我有两个约会。如何检查它们之间是否有30天的差异?我实际上有一个应用内购买,需要在每购买 30 天后禁用。当用户购买该功能时,日期已保存,因此我需要检查日期。如果 30 天过去了,我需要再次禁用该功能。

4

3 回答 3

6

您可以使用 timeIntervalSince1970 将两个日期转换为秒,然后检查差异是否大于 2592000(30*24*60*60,即 30 天 * 24 小时 * 60 分钟 * 60 秒)。

NSTimeInterval difference = [date1 timeIntervalSince1970] - [date2 timeIntervalSince1970];

if(difference >2592000)
{
 //do your stuff here
}

编辑:对于更紧凑的版本,您可以使用- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate

NSTimeInterval difference = [date1 timeIntervalSinceDate:date2];
if(difference >2592000)
{
    //do your stuff here
}
于 2012-07-12T11:46:21.337 回答
1

以下列方式提供开始和结束 NSDate:

    NSDate *date_Start;
    NSDate *date_End;
    NSCalendar *cal=[NSCalendar currentCalendar];
NSDateComponents *components=[cal components:NSDayCalendarUnit fromDate:date_Start toDate:date_End options:0];
    int days=[components day];
    if(days>30){
     //Your code here
    }
于 2012-07-12T12:51:25.730 回答
-1

您可以创建一个从现在起 +30 天的日期:

NSDate *thrityDaysPlus = [[NSDate date] dateByAddingTimeInterval:3600*24*30]

然后只需将其与您保存的日期进行比较

if ([date1 compare:date2] == NSOrderedDescending) {
    NSLog(@"date1 is later than date2");        

} else if ([date1 compare:date2] == NSOrderedAscending) {
    NSLog(@"date1 is earlier than date2");

} else {
    NSLog(@"dates are the same");

}
于 2012-07-12T11:45:06.740 回答