Utilizando 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" utilizando dateWithTimeIntervalSinceNow
, pero es mejor (y el horario de verano a prueba, etc) para hacerlo de esta manera el uso de 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 la mañana a la medianoche, en su lugar podría solo recupere los componentes mes/día/año de la fecha que representa ahora, sin horas/minutos/segundos parte, y añadir al menos 1 día, y 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];
P.S .: Usted puede leer consejos muy útiles y cosas acerca de los conceptos de fecha en la Date and Time Programming Guide, especialmente here about date components.
posible duplicado de [¿Cómo puedo obtener próxima fecha usando NSDate?] (Http: // stackoverflow.com/questions/1081689/how-can-i-get-next-date-using-nsdate) – raina77ow