2009-11-16 6 views
12

Also habe ich einen UIDatepicker in einer meiner Anwendungen für das Planen und automatische Wählen von Telefonkonferenzen implementiert ... alles ist ziemlich fertig, außer beim Testen habe ich festgestellt, dass das Datum vom 26. Dezember auf den 27. Dezember wechselt 2010.iPhone Date Picker rollt am 27. Dezember 2010 auf?

Ich rollte es sogar vorwärts bis 2011 ... und es ändert sich, wenn der 25. Dezember zum 26. ändert .... aber warte ... im Jahr 2012 rollt es richtig am 31. Dezember - 1. Januar. Und dann ist es wieder am 29.-30. 2013. Gibt es ein astronomisches Phänomen, von dem ich nicht weiß, ob es weitergeht oder läuft Apple auf irgendeinem verrückten Heechee-Kalender, von dem ich nichts weiß? Die Kalender-App funktioniert korrekt ...

Die wahrscheinlichste Erklärung ist, dass mir etwas fehlt, das so offensichtlich ist, dass ich mich selbst schlagen werde, wenn ich es erkenne. Aber hey, ich habe nicht geschlafen ... wow, ich erinnere mich nicht, ob es zwei Tage oder drei war. Erbarme dich und hilf mir hier draußen.

UPDATE: Also vielleicht war es nicht etwas Einfaches. Suche immer noch nach einer Antwort hier! Bin ich wirklich die einzige Person, die das erlebt hat ?? Ich wette, wenn Ende Dezember herumrollt, werden mehr Menschen die gleiche Straßensperre treffen.

UPDATE2: Jeder? Immer noch suchen, immer noch nicht finden ...

UPDATE3: Immer noch keine Lösung gefunden. Komm schon! Dies ist ein interessantes Puzzle!

UPDATE4: Immer noch keine Antwort gefunden. Ich habe die App eingereicht und sie befindet sich jetzt im Appstore. Möchte immer noch, dass dieses Problem gelöst ist, damit ich die App aktualisieren kann.

+0

Nur aus Neugier, welchen Kalender haben Sie für Ihren UIDatePicker eingestellt? Verwenden Sie currentCalendar oder autoupdatingCurrentCalendar? Ich vermute, da stimmt etwas nicht. –

+0

Gute Idee. Ich probierte aber beide aus und beide rollten an den selben Tagen. Irgendwelche anderen Ideen? – Taylor

+0

Besitzen Sie Apps, die diese Komponente verwenden? Funktioniert es für sie? –

Antwort

3

Es kann sein, dass wenn Sie in der letzten Woche des Monats sind und die Woche weniger als 7 Tage im aktuellen Monat hat, dann behandelt die API die Woche möglicherweise als die erste Woche des nächsten Monats. Seit Dezember 2012 hat bereits 7 Tage in seiner letzten Woche gibt es kein Problem in diesem Monat.

Ich bekam das gleiche Problem hier, und ich löste es.

- (int) currentWeekOfMonth 
{ 
    return CFCalendarGetOrdinalityOfUnit (
      CFCalendarCopyCurrent(), 
      kCFCalendarUnitWeek, 
      kCFCalendarUnitMonth, 
      [self absoluteTime]); 
} 

meine Anforderung ist Wochennummer zu zeigen und für diese i berechnen die Woche Anzahl der ersten Woche des Monats und dem Fügen Sie diese auf die Gesamtzahl der Woche im Monat.

int currentWeekNumberInYear = [_calendarInfo currentWeekOfYear]; 
int currentWeekNumberInMonth = [_calendarInfo currentWeekOfMonth]; 
currentWeekNumberInYear = currentWeekNumberInYear-currentWeekNumberInMonth +1; 
currentWeekNumberInYear = currentWeekNumberInYear<0 ? (NSInteger)[_calendarInfo weeksInMonth] ==5 ?49:48 : currentWeekNumberInYear; 

Ich hoffe, es wird Ihnen nützlich sein.

+0

Tolle Idee! Ich werde es in meinem Code überprüfen und sehen, was passiert. – Taylor

+0

Das hat für mich funktioniert! Danke für die Hilfe! – Taylor

3

Es stellt sich heraus die Datumsformat-Zeichenfolge zum Einrichten der NSDateFormatter, die dies für mich verursacht hat.

"yyyy" entspricht dem 4-stelligen Jahr, während YYYY dem Jahr ab dem Sonntag der 1. Woche des Jahres entspricht. Warum irgendjemand das wollen würde, ist eine Vermutung, und es würde wirklich helfen, wenn Apple einen Link zu ihrer Liste von Formatspezifizierern zur Verfügung stellen würde, aber da gehts los.

Stellen Sie nur sicher, dass Ihre Format-Zeichenfolge die Jahr-Komponente in Kleinbuchstaben hat und es sollte sortiert werden.