Если я использую следующий код:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm"];
NSDate *myDate = [dateFormatter dateFromString:@"2010-01-28T15:22:23.863"];
NSLog(@"%@", [dateFormatter stringFromDate:myDate]);
Это успешно преобразовывается в a Date
объект, однако, я, может казаться, не форматирую его никакой другой путь, чем yyyy-MM-dd'T'HH:mm
, т.е. то, что зарегистрировано, 2010-01-28T15:22:23
Если я изменяю dateFormat для высказывания [dateFormatter setDateFormat:@"yyyy-MMMM-d'T'HH:mm"];
объект Даты является несуществующим...
Таким образом, мой окончательный вопрос состоит в том, как отформатировать метку времени ISO8601 от базы данных SQL для использования, например, NSDateFormatterMediumStyle
возвратиться "1 января 2010"?
Вам нужен другой форматер для обработки вывода. Поместите это после вашего кода:
NSDateFormatter *anotherDateFormatter = [[NSDateFormatter alloc] init];
[anotherDateFormatter setDateStyle:NSDateFormatterLongStyle];
[anotherDateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSLog(@"%@", [anotherDateFormatter stringFromDate:myDate]);
Я должен отметить, что в прошлый раз, когда я проверял методы Apples NSDate
, не поддерживали ISO8601. У меня все еще есть ошибка Apple, касающаяся предоставления официальной поддержки.
+ (id) dateWithNaturalLanguageString: (NSString *) string
будет правильно (в прошлый раз, когда я ее запускал) проанализировать и создать NSDate
объект из строки ISO801, хотя в документации говорится, что вы не должны его использовать, он работал со всеми датами ISO8601, которые я пробовал до сих пор.
У меня похожая, но немного более сложная проблема , и я нашел очень простое решение!
Проблема:
Мои входящие даты ISO8601 выглядят так: 2006-06-14T11: 06: 00 + 02: 00
У них в конце есть смещение часового пояса.
Решение: Воспользуйтесь программой Питера Хози ISO8601DateFormatter , которую вы можете загрузить с здесь .
ISO8601DateFormatter *formatter = [[ISO8601DateFormatter alloc] init];
NSDate *theDate = [formatter dateFromString:dateString];
[formatter release], formatter = nil;
и
ISO8601DateFormatter *formatter = [[ISO8601DateFormatter alloc] init];
NSString *dateString = [formatter stringFromDate:[twitch dateTwitched]];
[formatter release], formatter = nil;