2 lanhailvcao lanhailvcao 于 2012.09.24 15:00 提问

在iphone里面判断日期是不是在两个日期之间

我可以比较日期:设定Date1 = 2011-10-14Date2 =2011-10-20。但是我想实现的是判断15号是否在Date1和Date2之间。代码如下:

if ( [date compare:Date1] == NSOrderedDescending && [date compare:Date2] ==    

NSOrderedAscending) {              //******     }

但是没有成功,请高手指点如何实现。谢谢!

2个回答

Chengzi_963
Chengzi_963   2012.09.25 10:49
已采纳

试试下面的代码:其中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) {  

} else if (result== NSOrderedDescending) { 

}  else {  

}
lanhailvcao
lanhailvcao thanks
5 年多之前 回复
hjue
hjue   2012.09.28 16:57

方法一: 可以用nsdate 的 timeIntervalSince1970 方法把时间转换成时间戳进行比较,这里timeIntervalSince1970返回的是NSTimeInterval(double)类型,直接比较就可以了

方法二:使用nsdate的compare方法实现

   + (BOOL)date:(NSDate*)date isBetweenDate:(NSDate*)beginDate andDate:(NSDate*)endDate
{
    if ([date compare:beginDate] == NSOrderedAscending)
        return NO;

    if ([date compare:endDate] == NSOrderedDescending) 
        return NO;

    return YES;
}
yiranwujixian
yiranwujixian 哈哈,这个方法挺好。没解决楼主的问题,但是把我的问题解决了
5 年多之前 回复
lanhailvcao
lanhailvcao 用了另外那个实现,不过谢谢你提供方法一的思路可以试,+1
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!