我有Date类型的对象..
所以我想比较它们,我在下面的方法中写了一个if条件
if (([startDate1 isEqualToDate:[self getDefaultDate]]) || (startDate1 != [ self getDefaultDate] && m_selectedDate >= m_currentDate1 && cycleStopped))
{
///execute some condition
}
Run Code Online (Sandbox Code Playgroud)
所以无论我是对还是错......这种做法?
是否以这种方式纠正是正确的
if (dtdate > [m_array objectatIndex:i]
{
}
Run Code Online (Sandbox Code Playgroud)
因为我得到一个随机的行为..
所以请帮助我的朋友和极客
问候Ranjit
Luk*_*uke 76
这是使用该NSDate方法的示例,compare:
if([startDate compare: endDate] == NSOrderedDescending) // if start is later in time than end
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
从课程参考:
如果...
接收者和另一个日子完全相同,NSOrderedSame.
接收器的时间晚于anotherDate,NSOrderedDescending.
接收器的时间早于另一个日期,NSOrderedAscending.
例如,timeIntervalSinceDate:如果要比较两个日期并找到它们之间的秒数,也可以使用该方法.
编辑:
if(([startDate1 compare:[self getDefaultDate]] == NSOrderedSame) || ([startDate1 compare: [self getDefaultDate]] != NSOrderedSame && (([m_selectedDate compare: m_currentDate1] == NSOrderedDescending) || [m_selectedDate compare: m_currentDate1] == NSOrderedSame) && cycleStopped))
Run Code Online (Sandbox Code Playgroud)
Pas*_*cal 19
比较NSDates的简便方法(可在http://webd.fr/637-comparer-deux-nsdate找到):
#import <Foundation/Foundation.h>
@interface NSDate (Compare)
-(BOOL) isLaterThanOrEqualTo:(NSDate*)date;
-(BOOL) isEarlierThanOrEqualTo:(NSDate*)date;
-(BOOL) isLaterThan:(NSDate*)date;
-(BOOL) isEarlierThan:(NSDate*)date;
//- (BOOL)isEqualToDate:(NSDate *)date; already part of the NSDate API
@end
Run Code Online (Sandbox Code Playgroud)
并实施:
#import "NSDate+Compare.h"
@implementation NSDate (Compare)
-(BOOL) isLaterThanOrEqualTo:(NSDate*)date {
return !([self compare:date] == NSOrderedAscending);
}
-(BOOL) isEarlierThanOrEqualTo:(NSDate*)date {
return !([self compare:date] == NSOrderedDescending);
}
-(BOOL) isLaterThan:(NSDate*)date {
return ([self compare:date] == NSOrderedDescending);
}
-(BOOL) isEarlierThan:(NSDate*)date {
return ([self compare:date] == NSOrderedAscending);
}
@end
Run Code Online (Sandbox Code Playgroud)
使用简单:
if([aDateYouWant ToCompare isEarlierThanOrEqualTo:[NSDate date]]) // [NSDate date] is now
{
// do your thing ...
}
Run Code Online (Sandbox Code Playgroud)
请享用
我必须承认,我发现“比较”== NSWhatHaveYou 业务太复杂而无法记住(即使它是正确的并且有效)。NSDate 有另外两种方法,我的大脑发现它们更容易处理: earlyDate 和 laterDate。
考虑一下:
if ([myDate laterDate:today] == myDate) {
NSLog(@"myDate is LATER than today");
} else {
NSLog(@"myDate is EARLIER than today");
}
// likewise:
if ([myDate earlierDate:today] == myDate) {
NSLog(@"myDate is EARLIER than today");
} else {
NSLog(@"myDate is LATER than today");
}
Run Code Online (Sandbox Code Playgroud)
任一方法都返回一个 NSDate 对象,该对象早于或晚于另一个。
http://pinkstone.co.uk/how-to-compare-two-nsdates/
| 归档时间: |
|
| 查看次数: |
36219 次 |
| 最近记录: |