NSDate *date = [NSDate dateWithTimeIntervalSince1970:timestamp];
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init];
[_dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
[_dateFormatter setDateFormat:@"dd-MM-yy HH:mm"];
NSString *dateString = [_dateFormatter stringFromDate:date];
NSLog(@"Date: %@ formatted: %@", date, dateString);
[_dateFormatter release];
Daje mi złą datę sformatowaną:NSDateFormatter z domyślną strefę czasową daje inny termin niż NSDate metody opisu
Data: 31.01.2013 18:00:00 +0000 sformatowane: 31-01-13 19:00 (z timestamp: 1359655200.000000)
Narzędzie do konwersji online: http://www.onlineconversion.com/unix_time.htm wskazuje, że pierwsza data jest poprawna: 2013-01-31 18:00:00 +0000.
Dlaczego NSDateFormatter wyświetla inną datę niż NSLog? Czy w przypadku drukowania na konsoli nie należy używać wartości domyślnej TimeTone w przypadku [NSDate description]
? Ten sam błąd występuje z [_dateFormatter setTimeZone:[NSTimeZone localTimeZone]]
; i [_dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]
;
[_dateFormatter setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @ "UTC"]]; rozwiązałem to. – Lukasz
Po prostu FTI, ogólnie lepiej używać 'timeZoneWithName:' zamiast 'timeZoneWithAbbreviation:'. Dla UTC nie ma znaczenia, ale w większości przypadków nazwa jest lepszym wyborem. –
Powód, dla którego niektóre skróty są takie same, np. EST występuje w Australii i USA. – migs647