【发布时间】:2011-10-20 08:09:43
【问题描述】:
我有一个 NSDateComponents 问题。我有两个 NSDate,我试图通过检查它们的年、月和日是否匹配来进行比较。我通过将 NSDate 值转换为这些整数组件来做到这一点,如下所示:
//NSDate *cgiDate is previously set to 2011-08-04 00:00:00 +0000
//NSDate *orderDate is previously set to 2011-08-04 14:49:02 +0000
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *cgiDateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:cgiDate];
NSCalendar *orderCalendar = [NSCalendar currentCalendar];
NSDateComponents *orderDateComponents = [orderCalendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:orderDate];
if (([cgiDateComponents day] == [orderDateComponents day]) &&
([cgiDateComponents month] == [orderDateComponents month]) &&
([cgiDateComponents year] == [orderDateComponents year])) {
GHTestLog(@"MATCHED");
} else {
GHTestLog(@"Not matched");
GHTestLog(@"Day: %d vs. %d", [cgiDateComponents day], [orderDateComponents day]);
}
我的结果不匹配,第 3 天 vs. 4 天。为什么会这样?
我非常感兴趣地阅读了以下问题: NSDateComponents - day method returning wrong day 和 https://stackoverflow.com/questions/3920445/nsdatecomponents-incorrectly-reporting-day 但是两者都没有回答我为什么这不起作用的问题。
有什么建议吗?
【问题讨论】:
标签: objective-c cocoa-touch ios4