-6

重複の可能性:
2つの日付の差を計算するにはどうすればよいですか?
NSDate、2つの日付を比較

私は2つの日付を持っています。それらの間に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を指定します。

    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 に答える