Congratulazioni, hai trovato più stranezze di fuso orario! Hai ragione sul fatto che la modifica del fuso orario risolverà il problema. Andiamo speleologi e vediamo se riusciamo a capire perché!
In primo luogo, cercheremo e troveremo ogni fuso orario in cui questo accade stranezza:
NSArray *tzs = [NSTimeZone knownTimeZoneNames];
NSDateFormatter *f = [[NSDateFormatter alloc] init];
f.dateFormat = @"MMyyyy";
for (NSString *name in tzs) {
f.timeZone = [NSTimeZone timeZoneWithName:name];
NSDate *date = [f dateFromString:@"062008"];
if (date == nil) {
NSLog(@"%@", name);
}
}
questo sta andando a ciclo attraverso tutti i fusi orari conosciuti e cerchiamo di analizzare "062.008" in quel fuso orario. Se corriamo questo, troviamo che registra:
Africa/Casablanca
Asia/Karachi
quindi immagino che si vive in uno Casablanca o Karachi (perché per impostazione predefinita, il tuo NSDateFormatter
viene inizializzato con vostro fuso orario, che è il motivo per cui si stiamo vedendo questo problema, probabilmente Casablanca, visto che sembra essere 1 ora avanti rispetto al GMT).
Vediamo se siamo in grado di capire cosa c'è di strano con quei fusi orari:
$ zdump -v Africa/Casablanca
... snip ...
Africa/Casablanca Sun Jun 1 00:00:00 2008 UTC = Sun Jun 1 01:00:00 2008 WEST isdst=1
... snip ...
$ zdump -v Asia/Karachi
... snip ...
Asia/Karachi Sat May 31 19:00:00 2008 UTC = Sun Jun 1 01:00:00 2008 PKST isdst=1
... snip ...
abbastanza sicuro, sembra che sia Casablanca e Karachi saltato la mezzanotte il 1 ° giugno del 2008. In tal modo, si è essenzialmente dandogli una data impareggiabile, e sta restituendo nil
. In poche parole.
In questo caso, la risposta corretta è di cambiare il fuso orario (GMT è probabilmente una grande scelta), perché è probabile che questa stringa si sta analisi non viene da input dell'utente (dato il suo formato strano), e quindi dovrebbe essere analizzato secondo un fuso orario standard. E anche se sono sicuro che Casablanca e Karachi siano davvero dei posti puliti, i loro fusi orari non sono esattamente comuni ...
TL; DR:
ora legale dovrebbe essere abolita.
Scrivi la tua risposta e fai clic sulla risposta: ti farà ottenere punti e renderà più chiaro per gli altri che seguono. –
E nella tua risposta, potresti spiegare più dettagliatamente: in che modo è correlato al fuso orario? OK, cambiando il fuso orario in GMT lo "riparavamo", ma l'ha fatto * davvero * risolto? Qual'era il problema? Se questa è veramente una correzione e non solo una benda, come risolve il problema? –
A proposito: in che fuso orario * sei *? Quando eseguo quel codice, e apparentemente quando hussain Shabbir (dalle risposte) lo esegue, entrambi riceviamo una data per '@" 062008 "'. Non lo fai, quindi che fuso orario e calendario utilizza il tuo formattatore? Se lo hai lasciato alle impostazioni predefinite, a che fuso orario e calendario è impostato il tuo sistema? –