我如何只比較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. Swift NSDate比較
- 2. NSDate比較
- 3. 比較NSDate [NSDate日期]
- 4. 比較文件的某些部分
- 5. 比較NSDate對象
- 6. 之間比較2 NSDate的
- 7. 的NSDate比較失敗
- 8. 比較AM和PM(NSDate的)
- 9. 僅比較NSDate與NSPredicate的時間組件
- 10. NSDate,比較兩個日期
- 11. 比較兩個NSDate失敗
- 12. 核心數據NSDate比較
- 13. cucumber-jvm:比較datatables忽略某些列
- 14. 比較NSMutableArray的NSMutableDictionaires的NSDate值
- 15. 與比較的NSDate [NSMutableArray的objectatIndex:我]
- 16. 如何使用XMLUnit比較文件的某些部分?
- 17. 比較的NSDate只有在年月日
- 18. NSDate比較顯示錯誤的值?
- 19. 兩個NSDate之間的日期比較
- 20. NSDate的比較都不盡如人意
- 21. 比較日期的問題 - NSDate
- 22. 比較NSDate的當天或前一天
- 23. 比較NSDate與[NSDate日期]最快的方法?
- 24. 比較一些
- 25. Git在某些文件中顯示比較
- 26. 比較NSdate時出現意外錯誤
- 27. NSDate比較總是返回NSOrderedSame
- 28. 轉換和比較NSString和NSDate
- 29. 如何比較當前和手動NSDate
- 30. 比較dataframes的某些列的交叉點大小不同
可能重複[對比的NSDate只有在年月日而言對象(http://stackoverflow.com/questions/3432700/compare-nsdate-objects-only-in - 年份 - 月 - 日) – 2013-08-30 14:53:12