2010-10-29 90 views
14

對於iOS SDK,我需要找到一個簡單而安全的方法來查看NSDate是否是今天,昨天,明天。我正在尋找的東西是這樣的僞代碼:找出NSDate是否是今天,昨天,明天

NSDate *myDate = someDate; 
if ([myDate isTomorrow]) { 
    NSLog("Tomorrow"); 
} 

你會如何解決它?

+0

的可能重複[比較NSDate的當天或前一天(http://stackoverflow.com/questions/2893835/compare-nsdate-for-today-or-yesterday) – 2010-10-29 14:08:32

回答

33

檢查我們的埃裏卡Sadun的偉大NSDateextension類:http://github.com/erica/NSDate-Extensions

有很多的日期比較,其中有你需要的東西:)

+0

與播放後找到了這一點,它似乎有一些問題,例如與夏令時也dateBysubstractingDays不工作。這是一個很好的延伸,但並不總是那麼安全。 – mrrmatinsi 2010-11-26 14:40:02

+1

對於那些將閱讀評論:項目已經更新了好幾次,所以不用擔心,一切都應該正常工作。 – Nekto 2012-10-30 03:44:45

+2

埃裏卡的代碼*正是*我正在尋找和NSDate偉大的實用工具類別。強烈推薦。 – 2013-01-21 16:08:13

36

我明白,這是很老,但我想帶答案是最新的(因爲我沒有看到其他人發佈了更新的答案)。

由於iOS的8.0你有一堆的,你可以使用日期比較功能:

  • compareDate:TODATE:toUnitGranularity:
  • 而isDate:equalToDate:toUnitGranularity:
  • 而isDate:inSameDayAsDate:
  • isDateInToday:
  • isDateInTomorrow:
  • isDateInWeekend:
  • isDateInYesterday:

參見下例:

NSDate *today = [NSDate new]; 
NSCalendar* calendar = [NSCalendar currentCalendar]; 

BOOL isToday = [calendar isDateInToday:today]; 
BOOL isYesterday = [calendar isDateInYesterday:today]; 

isToday將是YES。

isYesterday將沒有,因爲我們給它今天的日期。

請參閱Apple's Documentation進一步閱讀。

3

斯威夫特3

let isToday = Calendar.current.isDateInToday(yourDate) 

然後,您可以檢查該值,並用簡單的進行相應處理:

if isToday { 
    //If true, do this 
} 

也有類似的功能,爲了明天,週末,和其他幾個人,例如:

let isTomorrow = Calendar.current.isDateInTomorrow(yourDate) 

This guide它們都在Objective-C和Swift中:

enter image description here

相關問題