2010-10-29 95 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

相关问题