我想测试两个NSDate
对象是否具有相同的年/月/日但一天中的不同时间。这是我的代码:
NSDate *date1 = [dataDictionary1 valueForKey:@"date"];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
calendar.timeZone = [NSTimeZone systemTimeZone];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date1];
NSDate *newDate1 = [calendar dateFromComponents:components];
NSDate *date2 = [dataDictionary2 valueForKey:@"date"];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
calendar.timeZone = [NSTimeZone systemTimeZone];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date2];
NSDate *newDate2 = [calendar dateFromComponents:components];
但是,newDate1
返回 with2012-05-01 05:00:00 +0000
和newDate2
with 2012-05-01 04:00:00 +0000
。
小时不为零,因为我的时区不是格林尼治标准时间,但为什么两个小时不相等?您知道测试不同时间的日期是否相等的更好方法吗?(也就是说,比获取每个日期组件并测试每天/每月/每年的相等性更有效?)