2010-10-29 15 views
14

Con el iOS SDK, necesito encontrar una manera fácil y segura de ver si un NSDate es hoy, ayer o mañana. Lo que estoy buscando es algo como esto en el pseudo código:Averigüe si un NSDate es hoy, ayer, mañana

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

¿Cómo lo resolverías?

+0

posible duplicado de [Comparar NSDate para hoy o ayer] (http://stackoverflow.com/questions/2893835/compare-nsdate-for-today-or-yesterday) –

Respuesta

33

Compruebe gran NSDateextension clase de nuestra Erica Sadun: http://github.com/erica/NSDate-Extensions

Hay un montón de comparaciones de fechas, entre ellas exactamente lo que necesita :)

+0

encontrado a cabo después de jugar con esto un poco que parece tener algunos problemas, por ejemplo, con el horario de verano también la fechaBysubstractingDays no está funcionando. Es una gran extensión, pero no siempre es seguro. – mrrmatinsi

+1

Para aquellos que leerán comentarios: el proyecto ya se ha actualizado varias veces, así que no se preocupe, todo debería funcionar bien. – Nekto

+2

El código de Erica era * exactamente * lo que estaba buscando y una gran categoría de servicios públicos para NSDate.Muy recomendable. –

36

entiendo que esto es bastante viejo, pero me quieren llevar la respuesta actualizada (ya que no vi a nadie publicar una respuesta más actualizada).

Desde iOS 8.0 que tienen un montón de funciones que se pueden utilizar para la comparación de fechas:

  • compareDate: TODATE: toUnitGranularity:
  • ISDATE: equalToDate: toUnitGranularity:
  • ISDATE: inSameDayAsDate:
  • isDateInToday:
  • isDateInTomorrow:
  • isDateInWeekend:
  • isDateInYesterday:

Véase más adelante ejemplo:

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

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

isToday será sí.

isYesterday será NO, dado que le dimos la fecha de hoy.

Consulte Apple's Documentation para obtener más información.

3

Swift 3

let isToday = Calendar.current.isDateInToday(yourDate) 

entonces usted puede comprobar el valor y proceder en consecuencia con simplemente:

if isToday { 
    //If true, do this 
} 

Hay funciones similares para mañana, fin de semana, y algunos otros, por ejemplo:

let isTomorrow = Calendar.current.isDateInTomorrow(yourDate) 

This guide tienen todo en Objective-C y Swift:

enter image description here

Cuestiones relacionadas