Objetivo C: obtener el día siguiente a partir de hoy (mañana)

¿Cómo puedo verificar si una fecha es inherentemente MAÑANA?

No quiero agregar horas ni nada a una fecha como la de hoy, porque si hoy ya son las 22:59 , agregar demasiado pasaría al día siguiente, y agregar muy poco si es que la hora 12:00 se perderá mañana. .

¿Cómo puedo verificar dos NSDate y asegurar que uno es el equivalente de mañana para el otro?

Usando NSDateComponents puede extraer componentes de día / mes / año a partir de la fecha que representa hoy, ignorando los componentes de hora / minutos / segundos, agregar un día y reconstruir una fecha correspondiente al día de mañana.

Imagine que desea agregar exactamente un día a la fecha actual (incluida la información de horas / minutos / segundos igual a la fecha “ahora”), puede agregar un intervalo de tiempo de 24 * 60 * 60 segundos a “ahora” usando dateWithTimeIntervalSinceNow , pero es mejor (y prueba de DST, etc.) hacerlo de esta manera usando NSDateComponents :

 NSDateComponents* deltaComps = [[[NSDateComponents alloc] init] autorelease]; [deltaComps setDay:1]; NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:[NSDate date] options:0]; 

Pero si desea generar la fecha correspondiente a mañana a medianoche , podría simplemente recuperar los componentes mes / día / año de la fecha que representa ahora, sin horas / min / s parte , y agregar 1 día, luego reconstruir una fecha:

 // Decompose the date corresponding to "now" into Year+Month+Day components NSUInteger units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; NSDateComponents *comps = [[NSCalendar currentCalendar] components:units fromDate:[NSDate date]]; // Add one day comps.day = comps.day + 1; // no worries: even if it is the end of the month it will wrap to the next month, see doc // Recompose a new date, without any time information (so this will be at midnight) NSDate *tomorrowMidnight = [[NSCalendar currentCalendar] dateFromComponents:comps]; 

PD: Puede leer consejos realmente útiles y conceptos sobre la fecha en la Guía de progtwigción de fecha y hora , especialmente aquí sobre los componentes de la fecha .

En iOS 8 hay un método de conveniencia en NSCalendar llamado isDateInTomorrow .

C objective

 NSDate *date; BOOL isTomorrow = [[NSCalendar currentCalendar] isDateInTomorrow:date]; 

Swift 3

 let date: Date let isTomorrow = Calendar.current.isDateInTomorrow(date) 

Swift 2

 let date: NSDate let isTomorrow = NSCalendar.currentCalendar().isDateInTomorrow(date)