Mam timestamp pochodzących z serwera, który wygląda tak:Konwersja ISO 8601 do NSDate
2013-04-18T08:49:58.157+0000
Próbowałem usunięcie dwukropek, próbowałem wszystkie z nich:
Converting an ISO 8601 timestamp into an NSDate: How does one deal with the UTC time offset?
Why NSDateFormatter can not parse date from ISO 8601 format
Oto gdzie jestem:
+ (NSDate *)dateUsingStringFromAPI:(NSString *)dateString {
NSDateFormatter *dateFormatter;
dateFormatter = [[NSDateFormatter alloc] init];
//@"yyyy-MM-dd'T'HH:mm:ss'Z'" - doesn't work
//@"yyyy-MM-dd'T'HH:mm:ssZZZ" - doesn't work
//@"yyyy-MM-dd'T'HH:mm:sss" - doesn't work
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
// NSDateFormatter does not like ISO 8601 so strip the milliseconds and timezone
dateString = [dateString substringWithRange:NSMakeRange(0, [dateString length]-5)];
return [dateFormatter dateFromString:dateString];
}
Jednym z moich największych pytań jest format daty, który mam powyżej ISO 8601? Wszystkie przykłady, które widziałem od ludzi, formaty każdego z nich są nieco inne. Niektórzy mają ...157-0000
, inni nie mają niczego na końcu.
Potrzebujesz 'yyyy-MM-dd'T'HH: mm: ss.sssZ'. – rmaddy
Bez kostki, próbowałem nawet usunąć linię, aby usunąć 5 ostatnich znaków. – random
Przepraszam, zrobiłem literówkę - powinno to być "rrrr-MM-dd'T'HH: mm: ss.SSSZ". Nie przycinaj struny i nie ustawiaj strefy czasowej. – rmaddy