亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較兩個NSDate并忽略時間分量

比較兩個NSDate并忽略時間分量

DIEA 2019-12-17 15:20:25
比較兩個NSDate的最有效/推薦的方法是什么?我希望能夠看到兩個日期是否都在同一天,與時間無關,并且已經開始編寫一些代碼,該代碼使用NSDate類中的timeIntervalSinceDate:方法,并獲取該值的整數除以秒數一天內。這似乎很漫長,我覺得我缺少明顯的東西。我要修復的代碼是:if (!([key compare:todaysDate] == NSOrderedDescending)){    todaysDateSection = [eventSectionsArray count] - 1;}其中key和todaysDate是NSDate對象,而todaysDate使用以下方法創建:NSDate *todaysDate = [[NSDate alloc] init];
查看完整描述

3 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

在進行比較之前,您將日期中的時間設置為00:00:00:


unsigned int flags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;

NSCalendar* calendar = [NSCalendar currentCalendar];


NSDateComponents* components = [calendar components:flags fromDate:date];


NSDate* dateOnly = [calendar dateFromComponents:components];


// ... necessary cleanup


查看完整回答
反對 回復 2019-12-17
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

令我驚訝的是,沒有其他答案可以使用此選項來獲取對象的“開始日期”日期:


[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&date1 interval:NULL forDate:date1];

[[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay startDate:&date2 interval:NULL forDate:date2];

哪個設置date1并date2開始各自的日子。如果它們相等,則它們在同一天。


或此選項:


NSUInteger day1 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSDayCalendarUnit inUnit: forDate:date1];

NSUInteger day2 = [[NSCalendar currentCalendar] ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitEra forDate:date2];

其中規定day1,并day2以可以比較有點武斷值。如果它們相等,則它們在同一天。


查看完整回答
反對 回復 2019-12-17
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

iOS 8向NSCalendar引入了一種新方法,使此操作變得更加容易。


- (NSComparisonResult)compareDate:(NSDate *)date1 toDate:(NSDate *)date2 toUnitGranularity:(NSCalendarUnit)unit NS_AVAILABLE(10_9, 8_0);

您可以將粒度設置為重要的單位。這將忽略所有其他單位,并將比較范圍限制為所選單位。


查看完整回答
反對 回復 2019-12-17
  • 3 回答
  • 0 關注
  • 855 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號