Hinzufügen eines Tages zum aktuellen Datum in iOS
Ich sah diesen Beitrag: iOS und Morgen zu finden.
Code ist:
units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
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];
Problem: ich muss noch ein Tag, um meine aktuelle Datum, so dass z.B. der Unterschied zwischen 21st Jun 2013 und 21. Mai 2013, Monat 1 statt 0, Monat.
Den code, den ich verwende:
NSDate *selectedDate = [picker2 date];
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;
NSDateComponents *conversionInfo = [currCalendar components:unitFlags fromDate:selectedDate toDate:[NSDate date] options:0];
DLog(@"%i",conversionInfo.month);
DLog(@"%i",conversionInfo.day);
conversionInfo.day +=1;
DLog(@"%i",conversionInfo.day);
DLog(@"%i",conversionInfo.month);
int months = [conversionInfo month];
Aber wenn ich versuchte, den Unterschied zwischen 21st Jun 2013 und 21. Mai 2013 -> immer noch gibt mir 0 Monat statt 1 Monat.
Brauchen einige Hilfe auf diesem.
- Wenn Sie nur wollen, fügen Sie einen Tag auf heute, dann tun Sie dies :
NSDate *tomorrow = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:[NSDate date]];
Dies fügt 24*60*60 Sekunden zu einem gegebenen Zeitpunkt und gibt ein neues Datum zurück. - vielen Dank für die schnelle Antwort. gearbeitet...hinzufügen als Antwort.. wird mark es richtig..
- Hinzugefügt als Antwort.
- Ich verstehe nicht, den letzten Satz in deiner Frage. Warum sollte der Unterschied zwischen 21st Jun 2013 und 20 Jun 2013 1 Monat?
- entschuldigt, auf den letzten Teil.. falsch eingegeben...
- OK. Aber der Unterschied zwischen 21st Jun 2013 und 21. Mai 2013, gibt einem Monat (habe es getestet). Das problem könnte sein, dass die beiden dates haben unterschiedliche Zeiten. Für Beispiel, der Unterschied zwischen "21st Jun 2013 00:00" und "21 Mai 2013 00:30" bietet 30 Tagen, 23 Stunden, 30 Minuten und 0 Monaten. So haben Sie vielleicht die Normalisierung der Daten, um Mitternacht ersten.
- vielen Dank.. Werde, dass der check out...
- Sie wählen nur einen Tag mit der picker oder Tag/Stunde/minute? Welches Ergebnis erwarten Sie, wenn der aktuelle timestamp ist "21st Jun 2013 10:00" und das ausgewählte Datum ist "21st Aug 2013 9:00"? In anderen Worten, Sie möchten berechnen Sie die Differenz zu dem Beginn des aktuellen Tages oder die Differenz zu den aktuellen timestamp?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Form eines Datums-Komponente mit der Anzahl der Tage, die Sie hinzufügen möchten, zu Ihrem ursprünglichen Datum. Aus dem aktuellen Kalender vom Datum durch hinzufügen dieser Komponente zu Ihrem ursprünglichen Datum.
Hier ist eine Methode, die ich benutze:
Mit es, Sie können so viele Tage wie Sie wollen. Es funktioniert auch mit negativen zahlen, so können Sie subtrahieren Tage.
Einfache und unkomplizierte Lösung :
Dies ist in Ordnung für mich.
Für swift Googler:
Erste Sache,die Sie zuweisen, Tag, anstatt von Monat zu NSDateComponent.
Führen Sie die folgenden code und finden Sie Unterschied zwischen inDate Und newDate
NSInteger monthFlag = 1;
Komponenten.Monat = minuteFlag;
Hinzufügen einer beliebigen Anzahl von Komponenten, um das Datum, zum Beispiel: 2 Tage oder 2 Monate, 1 Jahr, tun Sie den folgenden:
können Sie initialisieren
DateComponents
mit etwas: