2013-03-10 11 views
9

próbuję przekonwertować ciąg do NSDate stosując następujący kod:NSDateFormatter zwraca nil do 2 AM godzinę

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 
NSDate *date= [dateFormatter dateFromString:@"2013-03-10T02:00:00"]; 

To działa dobrze dla wszystkich z wyjątkiem 02:00:00 godzin, przedstawiony powyżej, która zwraca zero.

Wszelkie pomysły?

+4

nie wiesz, jak to naprawić, ale problem może wynikać ze zmniejszenia czasu letniego – Nabou

+0

Tak, właśnie to. Zmień datę na 9 lub 11, a problem zniknie ... –

+18

W USA nie ma czegoś takiego jak 2 w dniu 10 marca 2013 roku. Czas upłynął od 1:59:59 do 3:00:00 z powodu do dziennego czasu oszczędzania światła. Ten sam problem pojawi się także w innych lokalizacjach, ale w innych datach/godzinach. – rmaddy

Odpowiedz

1

To właśnie z powodu czasu letniego, które miały miejsce w Stanach Zjednoczonych na 10 marca 2013

czasu systemowego skacze bezpośrednio od 1:59 rano do 3:00 ..
tracisz godzina, którą osiągnąłeś w listopadzie, kiedy DST wszedł w życie

Powiązane problemy