我如何只比较2 NSDates
的年 - 月 - 日组件?比较NSDate的某些组件?
5
A
回答
11
因此,这里是你会怎么做:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSInteger desiredComponents = (NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit);
NSDate *firstDate = ...; // one date
NSDate *secondDate = ...; // the other date
NSDateComponents *firstComponents = [calendar components:desiredComponents fromDate:firstDate];
NSDateComponents *secondComponents = [calendar components:desiredComponents fromDate:secondDate];
NSDate *truncatedFirst = [calendar dateFromComponents:firstComponents];
NSDate *truncatedSecond = [calendar dateFromComponents:secondComponents];
NSComparisonResult result = [truncatedFirst compare:truncatedSecond];
if (result == NSOrderedAscending) {
//firstDate is before secondDate
} else if (result == NSOrderedDescending) {
//firstDate is after secondDate
} else {
//firstDate is the same day/month/year as secondDate
}
基本上,我们采取了两个日期,剁下自己的时间 - 分 - 秒位,把它们放回日期。然后,我们比较这些日期(不再有时间分量;只有日期分量),并看看他们如何比较彼此。
警告:在浏览器中键入并且未编译。警告实施者
4
退房这个话题NSDate get year/month/day
一旦你拔出日/月/年,你可以把它们比为整数。
如果你不喜欢这种方法
相反,你可以试试这个..
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy"];
int year = [[dateFormatter stringFromDate:[NSDate date]] intValue];
[dateFormatter setDateFormat:@"MM"];
int month = [[dateFormatter stringFromDate:[NSDate date]] intValue];
[dateFormatter setDateFormat:@"dd"];
int day = [[dateFormatter stringFromDate:[NSDate date]] intValue];
而另一种方式......
NSDateComponents *dateComp = [calendar components:unitFlags fromDate:date]; NSInteger year = [dateComp year]; NSInteger month = [dateComp month]; NSInteger day = [dateComp day];
+0
'NSCalendar'在iOS上工作 – 2011-03-16 21:03:37
+0
太棒了,我曾经在某处读过,可能不会,但是感谢您的验证。 – 2011-03-16 21:04:52
-1
用-[NSDate compare:]
方法 - NSDate Compare Reference
0
从iOS 8开始,您可以使用-compareDate:toDate:toUnitGranularity:
方法NSCalendar
。
像这样:
NSComparisonResult comparison = [[NSCalendar currentCalendar] compareDate:date1 toDate:date2 toUnitGranularity:NSCalendarUnitDay];
的
相关问题
- 1. NSDate比较
- 2. Swift NSDate比较
- 3. 比较NSDate [NSDate日期]
- 4. 比较文件的某些部分
- 5. 比较NSDate对象
- 6. 的NSDate比较失败
- 7. 比较AM和PM(NSDate的)
- 8. 比较两个NSDate失败
- 9. NSDate,比较两个日期
- 10. 核心数据NSDate比较
- 11. cucumber-jvm:比较datatables忽略某些列
- 12. 与比较的NSDate [NSMutableArray的objectatIndex:我]
- 13. 如何使用XMLUnit比较文件的某些部分?
- 14. 比较日期的问题 - NSDate
- 15. 比较的NSDate只有在年月日
- 16. 比较NSDate的当天或前一天
- 17. 比较一些
- 18. Git在某些文件中显示比较
- 19. 转换和比较NSString和NSDate
- 20. 比较dataframes的某些列的交叉点大小不同
- 21. 比较表单组件值
- 22. 如何比较response.Text与ajax中的某些字符串
- 23. “毫无意义的比较”警告在模板与某些值
- 24. 比较某些不能产生预期结果的位
- 25. 比较组一组
- 26. 元组比较
- 27. 比较元组
- 28. 比较数组
- 29. 数组比较?
- 30. 数组比较
可能重复[对比的NSDate只有在年月日而言对象(http://stackoverflow.com/questions/3432700/compare-nsdate-objects-only-in - 年份 - 月 - 日) – 2013-08-30 14:53:12