1

私は日付を比較する方法を知っています。私の場合、Date1 = 2011-10-14 & Date2 =2011-10-20 とします。そして、10 月 15 日が Date1 と Date2 の間にあるかどうかを確認したいのですが、これには次のコードを使用しています。 :

if ( [date compare:Date1] == NSOrderedDescending && [date compare:Date2] == NSOrderedAscending) {   
            //write codes

        }

ただし、これは 10 月 15 日が 10 月 14 日から 20 日の間にあるかどうかをチェックするのではなく、日付全体をチェックします。それで、これをどのように実装しますか。事前にt​​hnx。

4

3 に答える 3

4

次のコードがお役に立てば幸いです。Date1 と Date2 があると仮定すると、

NSCalendar *calendar = [NSCalendar currentCalendar];
NSInteger desiredComponents = (NSDayCalendarUnit | NSMonthCalendarUnit);


NSDateComponents *firstComponents = [calendar components:desiredComponents fromDate:Date1];
NSDateComponents *secondComponents = [calendar components:desiredComponents fromDate:Date2];

NSDate *firstWOYear = [calendar dateFromComponents:firstComponents];
NSDate *SecondWOYear = [calendar dateFromComponents:secondComponents];

NSComparisonResult result = [firstWOYear compare:SecondWOYear];
if (result == NSOrderedAscending) {
    //Date1 is before Date2
} else if (result == NSOrderedDescending) {
    //Date1 is after Date2
}  else {
    //Date1 is the same day/month as Date2
}
于 2012-09-18T04:24:36.570 に答える
3

ここで、 date1 = 2011-10-14 およびdate2 =2011-10-20 で、dateは確認する日付です。

これを行う

if([date timeIntervalSince1970] >= [date1 timeIntervalSince1970] && [date timeIntervalSince1970] <= [date2 timeIntervalSince1970])
{
    NSLog(@"%@ lies between and including %@ and %@",date,date1,date2);
   // if you just wanna check for between (not including) two dates just remove the equal signs above in condition check
}
else
    NSLog(@"%@ does not lie between %@ and %@",date,date1,date2);

上記のコードは、日付が指定された 2 つの極端な日付の間にあるかどうかを確認しますが、極端な日付の間 (ただし除外) を確認したい場合は、if 条件チェックから等号を削除するだけです。

于 2012-09-18T04:33:57.733 に答える
1

比較->

NSString *dateString1 = @"2011-10-14";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @"yyyy-MM-dd";

NSDate *date1 = [formatter dateFromString:dateString1];

NSString *dateString2 = @"2011-10-20";    
NSDateFormatter *formatter2 = [[NSDateFormatter alloc]init];
formatter2.dateFormat = @"yyyy-MM-dd";

NSDate *date2 = [formatter2 dateFromString:dateString2];


NSString *dateString3 = @"2011-10-15";
NSDateFormatter *formatter3 = [[NSDateFormatter alloc]init];
formatter3.dateFormat = @"yyyy-MM-dd";

NSDate *date3 = [formatter3 dateFromString:dateString3];

if ([date3 compare:date1] == NSOrderedDescending && [date3 compare:date2] == NSOrderedAscending) 
{
    NSLog(@"%@ lies b/w %@ and %@",dateString3,dateString1,dateString2);
}
else
{
    NSLog(@"Doesn't lie!");
}
于 2012-09-18T04:53:14.883 に答える