找出一个NSDate是否是今天,昨天,明天

在iOS SDK中,我需要find一个简单而安全的方法来查看NSDate是否在今天,昨天,明天。 我正在寻找的是这样的伪代码:

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

你将如何解决?

检查我们的Erica Sadun的伟大的NSDate extension类: http : //github.com/erica/NSDate-Extensions

有很多date比较,其中正是你需要:)

我明白,这是相当古老的,但我想把答案更新(因为我没有看到其他人发布更新的答案)。

自iOS8.0以来,您可以使用一堆function进行date比较:

  • 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。

是昨天将是否,因为我们给它今天的date。

请参阅Apple的文档以进一步阅读。

Swift 3

 let isToday = Calendar.current.isDateInToday(yourDate) 

然后,您可以检查该值并相应地执行以下操作:

 if isToday { //If true, do this } 

例如,对于明天,周末和其他一些function也有类似的function:

 let isTomorrow = Calendar.current.isDateInTomorrow(yourDate) 

这个指南在Objective-C和Swift中都有它们:

在这里输入图像说明