我正在使用一种方法并且它没有给我正确的输出然后我才知道,我比较日期和时间对象的方式是完全错误的。我用谷歌搜索,但找不到一些相关的解决方案。我想比较一个日期和时间对象与另一个对象。
例如:
if (dtcur >= dtstart && dtcur <= myDT) // 2014-03-24 11:30:00 >= 2014-03-24 11:00:00 & 2014-03-24 11:30:00 <= 2014-03-25 11:00:00
{
// should come here in if condition
}
但它进入了其他方面。这意味着我的比较是错误的,任何人都可以帮助我如何比较两个日期和时间对象。提前致谢
答案 0 :(得分:0)
BOOL isLaterOrEqualToStartDate = [dtcur isEqualToDate:dtstart] || [dtcur later:dtstart];
BOOL isEarlierOrEqualToMyDate = [dtcur isEqualToDate:myDT] || [dtcur earlier:myDT];
if(isLaterOrEqualToStartDate && isEarlierOrEqualToMyDate)
{
// do something
}
答案 1 :(得分:0)
你指的是NSDate?如果是这样,你可以使用属性timeIntervalSince1970(这是一个double值)进行比较。你无法直接比较NSDate,因为它们是对象。这是一个小例子。您可以取消注释该行以查看结果如何更改。
NSDate *date1 = [NSDate date];
NSDate *date2 = [date1 dateByAddingTimeInterval:10];
if (date2.timeIntervalSince1970 > date1.timeIntervalSince1970)
{
NSLog(@"date 2 is bigger");
}
else
{
NSLog(@"date 1 is bigger");
}
答案 2 :(得分:0)
许多对象(包括NSDate)都有compare:
方法。像这样使用它:
if ([date1 compare:date2] == NSOrderedAscending) {
// date2 is after date1
} else if ([date1 compare:date2] == NSOrderedDescending) {
// date2 is before date1
} else if ([date1 compare:date2] == NSOrderedSame) {
// they're both the same date
}