hoc*_*ker 4 cocoa-touch objective-c ios4
我有一个NSDateComponents问题.我有两个NSDates,我试图通过检查他们的年,月和日匹配来比较.我这样做是通过将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]);
}
Run Code Online (Sandbox Code Playgroud)
我的结果是不匹配,日:3 vs. 4.为什么会这样?
我非常感兴趣地阅读了以下问题: NSDateComponents - 返回错误日期的日方法和 /sf/ask/274431181/但是我们都没有回答我为什么这不起作用的问题.
有什么建议?
我认为问题如下:您的日期设置在GMT时区(+0000)如果您在美国,例如在GTM-6,那么-currentCalendar第一个日期将是8月3日下午6点,而第二个日期将是8月4日上午8点49分.
您应该强制您的日历具有UTC(GMT)时区,或者将日期放在您的时区中,具体取决于您的应用程序的正确性.
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |