Der folgende Code zeigt das Problem: Das Vorrücken eines ganzen Jahres vom ersten Tag des Jahres 1435 führt nicht zum ersten Tag des Jahres 1436.
Irgendwelche Ideen, was ich vermisse?
%Vor%Mein Verdacht ist wegen Sommerzeit / Winterzeit (Sommerzeit) Unterschied. Muh. 1, 1435 fällt am 5. November 2013, während Muh. 1, 1436 fällt am 25. Oktober 2014. Das erste Datum ist im Winter, das zweite im Sommer.
Das erste von dir erstellte NSDate ist genau der 5. November 2013 00:00 (um Mitternacht). "dateByAddingComponents:" konvertiert die Komponenten in Sekunden und fügt sie dem ersten Datum hinzu. In diesem Fall ist das Ergebnis wegen der Sommerzeit der 24. Oktober 2014 23:00.
Dies würde auch bedeuten, dass die Ergebnisse für verschiedene Menschen auf der ganzen Welt aufgrund von Zeitunterschiedsunterschieden zwischen Zeitzonen unterschiedlich sein könnten.
Sie können das Problem vermeiden, indem Sie das erste Datum auf Mitternacht setzen, anstatt auf Mitternacht (was im Allgemeinen eine gute Idee ist, wenn Sie mit reinen Daten arbeiten):
%Vor%Nun, ob das richtige Verhalten von "dateByAddingComponents" ist, ist eine andere Frage.
Tags und Links objective-c ios nscalendar nsdatecomponents