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?

InformationsquelleAutor lakesh | 2013-06-21
Schreibe einen Kommentar