Mit NSDateComponents
können Sie Tag/Monat/Jahr-Komponenten aus dem Datum, das heute darstellt, extrahieren, die Stunden/Minuten/Sekunden-Komponenten ignorieren, einen Tag hinzufügen und ein Datum für morgen neu erstellen.
Also stellen Sie sich vor, Sie möchten genau einen Tag zum aktuellen Datum hinzufügen (einschließlich Stunden/Minuten/Sekunden Informationen die gleiche wie das "jetzt" Datum), Sie könnten ein timeInterval von 24 * 60 * 60 Sekunden hinzufügen " „jetzt mit dateWithTimeIntervalSinceNow
, aber es ist besser (und DST-Beweis usw.) es auf diese Weise zu tun NSDateComponents
mit:
NSDateComponents* deltaComps = [[[NSDateComponents alloc] init] autorelease];
[deltaComps setDay:1];
NSDate* tomorrow = [[NSCalendar currentCalendar] dateByAddingComponents:deltaComps toDate:[NSDate date] options:0];
aber wenn Sie das Datum entsprechend morgen um Mitternacht generieren möchten, können Sie stattdessen abrufen nur die Monat/Tag/Jahr Komponenten der Zeitpunkt jetzt darstellt, ohne Stunden/min/sec Teil und 1 Tag hinzufügen, dann wieder aufzubauen ein Datum:
// 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 .: Sie wirklich nützliche Ratschläge und Sachen über Datum Konzepte im Date and Time Programming Guide lesen können, insbesondere here about date components.
möglich Duplikat [Wie kann ich nächsten Termin mit NSDate bekommen?] (Http: // stackoverflow.com/questions/1081689/how-can-i-get-next-date-using-nsdate) – raina77ow